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

变量THIS,我想知道是否有以下功能:

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

并且我运行someFn()显然它将控制台窗口,但是在那里,无论如何我都可以使那个完全相同的功能控制台成为字符串?不是物体吗?

我已经尝试了很多方法,甚至:
someFn.call("A Nice String");

但这会将字符串分解为每个字母上的对象。

有什么办法吗?

最佳答案

在宽松模式下,this始终是一个对象。字符串,数字和 bool(boolean) 值将被包装(这是您看到的类似数组的 String 对象),nullundefined将被全局对象替换(浏览器中的window)。

如果使用strict mode,它将按预期工作:

function someFn(){ "use strict"; console.log(this); }
someFn(); // undefined
someFn.call("A nice string"); // A nice string

10-07 21:42