所以我在摆弄Javascript,有一件事引起了我的注意。
变量THIS,在处理它时,我想知道,如果我有这个函数:
var someFn = function(){ console.log(this); }
我运行someFn(),显然它会控制台窗口,但有没有,无论如何,我可以让完全相同的函数控制台成为字符串?而不是物体?
我尝试了很多方法,甚至:
someFn.call("A Nice String");
但它会在每个字母上将字符串分解为一个对象。
有办法吗?
在松散模式中,this
始终是一个对象。字符串、数字和布尔值将被包装(这就是您所看到的,类似于String
对象的数组),null
和undefined
将被全局对象(浏览器中的window
)取代。
如果您使用严格模式,它将按预期工作:
function someFn(){ "use strict"; console.log(this); }
someFn(); // undefined
someFn.call("A nice string"); // A nice string
我以前遇到过这个问题,它似乎坚持将每个字母都作为数组的一部分注销对象。
我最终作弊并使用了类似的东西:
console.log(this+'')
或
console.log(this.toString());