所以我在弄乱Javascript,有一件事引起了我的注意。
变量THIS,我想知道是否有以下功能:
var someFn = function(){ console.log(this); }
并且我运行someFn()显然它将控制台窗口,但是在那里,无论如何我都可以使那个完全相同的功能控制台成为字符串?不是物体吗?
我已经尝试了很多方法,甚至:
someFn.call("A Nice String");
但这会将字符串分解为每个字母上的对象。
有什么办法吗?
最佳答案
在宽松模式下,this
始终是一个对象。字符串,数字和 bool(boolean) 值将被包装(这是您看到的类似数组的 String
对象),null
和undefined
将被全局对象替换(浏览器中的window
)。
如果使用strict mode,它将按预期工作:
function someFn(){ "use strict"; console.log(this); }
someFn(); // undefined
someFn.call("A nice string"); // A nice string