从生产的角度来看可能无关紧要,但我想知道为什么会这样。字符串文字被解释为对象。
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 是在全局范围内定义的事实!
From MDN 调用() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call :
thisArg
这个值是为调用 fun 提供的。请注意,这
可能不是该方法看到的实际值:如果该方法是
非严格模式代码中的函数,null 和 undefined 将被替换
与全局对象,以及原始值将被装箱.
基元 [又名数字/字符串] 被放置到容器对象中,因此它的工作方式就像您所看到的一样。
所以它基本上做的是
> var x = "string";
> typeof x
"string"
> var temp = new String(x);
> typeof temp
"object"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)