【发布时间】:2013-08-15 03:03:51
【问题描述】:
我正在实例化一个创建 DOM 元素并将 jQuery 对象 作为其属性之一的对象,例如:
this.element = $("<div></div>");
我注意到在建立事件时,jQuery 对this 上下文的重写可能会导致问题,例如如果您尝试应用以下内容:
this.element.click(function() {
this.someObjectMethod();
});
内部 this 现在适用于 DOM 元素,而不是原始对象。为了克服这个问题,我可以做到以下几点:
var _this = this;
this.element.click(function() {
_this.someObjectMethod();
});
我想知道,这是不好的做法,有没有更好的方法?我查看了一些jQuery docs on apply and call,但我不确定他们是否会在这种情况下提供帮助。
另外,我正在使用Resig's 'simple inheritence 'Class,这可能会对您的答案产生影响。
更新看到$.proxy 的答案,这些似乎是合理的解决方案,但是您将失去引用 DOM 元素的能力。
【问题讨论】:
-
将
this分配给另一个变量的做法是标准做法。人们一般使用self或that作为名字(我更喜欢that作为selfshadowswindow.self) -
@jbabey - 我也见过
self被使用过,虽然我必须承认我发现互换使用这些词有点令人困惑,所以我只是觉得前缀this对我来说可能更清楚.我喜欢你对that的建议,可能会采纳!谢谢