对于以下代码
a.b = function c(){
return function e(){
return this;
};
};
d = a.b();
d() 的值是多少?这可能不是一个很好的例子,但我只是对“this”指的是什么感到困惑。
谢谢,
对于以下代码
a.b = function c(){
return function e(){
return this;
};
};
d = a.b();
d() 的值是多少?这可能不是一个很好的例子,但我只是对“this”指的是什么感到困惑。
谢谢,
看到 d 现在等于一个 FUNCTION,“this”将被评估为任何调用它的函数。它实际上还没有被评估。
在执行结束时,d='function e() { return this; }'
, 所以你执行的时刻d()
就是this
评估的时间。
从您的代码中,d 与“this”不同。d 将是函数 e,因为您将 d 设置为返回函数的函数调用 ab() 的返回值,所以
d = function e(){
return this;
}
现在 的值this
取决于您如何调用此函数 d。this
将在调用此函数时进行评估。如果您只是 d()
this
将其称为全局Window
对象。
让我们说如果我有
obj ={foo:1, bar:2};
我这样打电话
d.call( obj )
this
将是对象 obj。call() 方法用于调用任何对象上的函数,传递的对象的行为与this
该函数内部一样。
我知道 Javascript 这真的很令人困惑,而且很难理解它。可能这可以帮助http://devlicio.us/blogs/sergio_pereira/archive/2009/02/09/javascript-5-ways-to-call-a-function.aspx
假设d()
在您的代码段的最后一行之后立即调用d()
将返回全局对象:window
如果您在浏览器中。
然而,这两个都是真的:
d.call(a) === a;
d.call(a.b.prototype) === a.b.prototype;
也就是说,this
它由作为第一个参数传入的内容定义call
。
this
是对调用方法的对象的引用。
d()
类似window.d()
(如果没有with
说明)
这通常是函数的调用者
$('.image').each(function(index){
alert($(this).attr('href'));
}
我认为 ab() 会返回一个