理解了Javascript中的THIS,我迷失了方向



所以我在摆弄Javascript,有一件事引起了我的注意。

变量THIS,在处理它时,我想知道,如果我有这个函数:

var someFn = function(){ console.log(this); }

我运行someFn(),显然它会控制台窗口,但有没有,无论如何,我可以让完全相同的函数控制台成为字符串?而不是物体?

我尝试了很多方法,甚至:

someFn.call("A Nice String");

但它会在每个字母上将字符串分解为一个对象。

有办法吗?

在松散模式中,this始终是一个对象。字符串、数字和布尔值将被包装(这就是您所看到的,类似于String对象的数组),nullundefined将被全局对象(浏览器中的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());

最新更新