【发布时间】:2010-02-19 08:13:19
【问题描述】:
似乎当使用原始类型(字符串、数字)作为函数调用的 this 主题(作为 function.call() 或函数 apply() 的第一个参数)时,原始类型被提升到它的等效对象(例如,一个字符串变成一个字符串)。
举例说明:
var f = function(x) { return [typeof(this), typeof(x)]; }
var obj = '123'
f.call(obj, obj)
>>> ["object", "string"]
也就是说,“this”变成了一个对象(它是一个字符串对象,我已经检查过了),而调用的第二个参数变成了函数“f”的第一个参数,并且仍然是一个原始字符串。
对象都是都是“123”,但微妙的东西不起作用(例如,它们在“==”方面相等,但在“===”方面不相等) .
我在 chrome 和 firefox 中都注意到了这种行为,所以我假设这是有特定原因的。我已经搜索过,但没有找到任何解释。我会很感激任何解释,希望有某种文档链接解释有关此的规则及其发生的原因。
【问题讨论】:
标签: javascript