以下代码
a.b = function c(){
return function e(){
return this;
};
};
d = a.b();
d()的价值是多少?这可能不是一个很好的例子,但我只是对这个"这个"将参考。
谢谢,
答案 0 :(得分:4)
看到d现在将等于一个FUNCTION,“this”将被评估为任何调用它的函数。它尚未实际评估过。
在执行结束时d='function e() { return this; }'
,所以执行d()
的那一刻就是评估this
的时间。
答案 1 :(得分:1)
从您的代码中,d与“this”不同。 d将是函数e,因为你将d设置为函数调用的返回值a.b()返回一个函数,所以
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
答案 2 :(得分:0)
答案 3 :(得分:0)
这通常是函数的调用者
$('.image').each(function(index){
alert($(this).attr('href'));
}
我认为a.b()会返回
请参阅http://remysharp.com/2007/04/12/jquerys-this-demystified/
答案 4 :(得分:0)
假设在您的代码段d()
的最后一行之后立即调用d()
将返回全局对象:window
如果您在浏览器中。
然而,这两件事都是真的:
d.call(a) === a;
d.call(a.b.prototype) === a.b.prototype;
也就是说this
由作为call
的第一个参数传入的内容定义。
答案 5 :(得分:0)
this
是对调用方法的对象的引用。
d()
类似window.d()
(如果没有with
指令)