【发布时间】:2011-03-20 09:17:52
【问题描述】:
我是闭包(以及一般的 Javscript)的初学者,对于这段代码中发生的事情,我找不到令人满意的解释:
function myObject(){
this.myHello = "hello";
this.myMethod = do_stuff;
}
function do_stuff(){
var myThis = this;
$.get('http://example.com', function(){
alert(this.myHello);
alert(myThis.myHello);
});
}
var obj = new myObject;
obj.myMethod();
它会提示“未定义”,然后是“你好”。显然这不应该是特定于 jQuery 的,但这是我能想到的最简单的原始代码形式。 do_stuff() 中的闭包可以访问该范围内的变量,但显然这条规则不适用于 this 关键字。
问题:
当闭包在do_stuff()(在本例中为$.get())的范围之外传递时,this 会发生什么情况? myThis 是否包含 this 的副本或对其的引用?在闭包中使用this 通常不是一个好主意吗?
非常感谢任何回应。
【问题讨论】:
标签: javascript jquery closures this