Cla*_*diu 6 javascript global object
将函数附加到对象并调用时:
function f() { return this.x; }
var o = {x: 20};
o.func = f;
o.func(); //evaluates to 20
Run Code Online (Sandbox Code Playgroud)
this指的是函数被称为方法的对象.这等同于做f.call(o).
当函数不是作为对象的一部分调用时,this引用全局对象.如何检查是否从非对象上下文调用函数?是否有任何标准关键字可以访问全局对象?是这样做的唯一方法吗?
globalobj = this;
function f() { if (this == globalobj) doSomething(); }
Run Code Online (Sandbox Code Playgroud)
注意:我在这里没有特别的用例 - 我实际上是在询问这个确切的机制.
Mik*_*uel 10
以下应该有效,因为使用值为null的Function.call将在全局范围内调用它.
this === ((function () { return this; }).call(null))
Run Code Online (Sandbox Code Playgroud)
一个更简单的变体,
this === (function () { return this; })()
Run Code Online (Sandbox Code Playgroud)
也会工作,但我认为第一个使意图更清晰.
全局对象实际上是窗口,您可以这样做
if (this === window)
Run Code Online (Sandbox Code Playgroud)