1

可能重复:
“this”关键字,
在 javascript 中未清除此运算符

function foo()
{
    if(this === window)
        return null;

    return 1;
}

var i = foo(); // returns 1;

什么是this全局函数的成员,如果在全局范围内或作为成员函数调用它,我如何在函数内进行测试?

编辑:似乎 JQuery 在这里有所作为,因为每个人都向我保证foo应该返回null普通的 JavaScript。JQuery 如何改变这一点?

请注意,OP 在下面的评论中说这是在 Greasemonkey 脚本中。

4

4 回答 4

3

this在这种情况下指的是窗口对象。

alert(this);,它会说[object Window]

但如果你这样做

var i = new foo(); // returns an object (instance of foo);

thenthis指的是 的实例foo

于 2011-07-07T18:24:35.520 回答
3

据此,差异是由于greasemonkey(不是JQuery)。

然而,Greasemonkey 用户脚本默认情况下将所有代码包装在一个匿名函数包装器中,该包装器会吞下标识符,导致它们不会最终出现在全局对象上。

它接着说,您可以像使用常规页面 Javascript 一样使用@unwrapthis指出。window

于 2011-07-07T18:56:43.457 回答
0

this 成员指的是整个页面,并且将始终被定义 - 您的 foo() 方法永远不会返回 null。

于 2011-07-07T18:28:40.747 回答
-1

this总是指向当前元素。在 的情况下foo()this指向window

于 2011-07-07T18:25:29.997 回答