从生产角度来看可能无关紧要,但我想知道为什么这样做会有所不同。字符串文字被解释为一个对象。
function fancyCallback(callback) {
callback(this);
console.log(typeof this); // just to see it really is an object
}
fancyCallback.call('string here', console.log);
我必须致电
this.toString()
如果我想要预期的输出,在函数内部。我知道字符串是javascript中的对象(这很可爱),但在简单的console.log('abc')中,它们自然被解释为字符串。这是为什么?这有用吗?请忽略fancyCallback在全局范围内定义的事实!
答案 0 :(得分:6)
来自MDN call():
thisArg
为乐趣召唤提供的价值。请注意这一点 可能不是方法看到的实际值:如果方法是a 在非严格模式代码中的函数,null和undefined将被替换 使用全局对象, 原始值将加框 。
Primitives [aka numbers / strings]被放入一个容器对象中,所以它就像你看到它一样工作。
所以它基本上是做什么
> var x = "string";
> typeof x
"string"
> var temp = new String(x);
> typeof temp
"object"