【问题标题】:Javascript - Store variable as object and functionJavascript - 将变量存储为对象和函数
【发布时间】:2014-10-08 17:46:50
【问题描述】:

我已经看到变量的实例既是对象又是字符串。示例:

alert(x + ""); // Hello
alert(x()); // World

这种事情就是 jQuery 对$ 变量所做的。

你如何获得这种效果?

【问题讨论】:

  • 您不像在第一个示例中那样使用 jQuery 的 $。 jQuery 的 $ 只是一个函数,它也有属性(可能是函数本身)。答案中提到的toString 很少被覆盖。
  • 你确定这就是 jQuery 所做的吗?上次我查看时,它的许多(大多数?)方法都被重载了,并且根据它们是否传递了函数、对象、字符串等来执行操作,而不是覆盖或替换内置方法。
  • 另外,jQuery not 会覆盖toString(尽管它无论如何都没有用)。您只需在 SO 上打开控制台并输入 $.toString() 或通过 $.toString === Function.prototype.toString 确认,即可看到 true
  • jQuery 允许你做$.xyz();$(".abc").xyz();。这就是我所说的。
  • @tupperkion 任何函数都可以有属性,因为函数是对象。

标签: javascript variables object


【解决方案1】:

不,变量不能既是对象又是(原始)字符串。

但是,如果您尝试将对象转换为字符串(例如,使用obj + ''),则会使用其toString 方法返回的字符串。

function x() {
    return "World";
}
x.toString = function() {
    return "Hello";
};

【讨论】:

  • 反之亦然,为了评估表达式,基元被转换为对象:'blah'.split()。 ;-)
猜你喜欢
  • 2013-12-03
  • 2016-01-22
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
相关资源
最近更新 更多