如何获得一个' MyClass'来自jquery的回调中的实例。
function MyClass(){
this.message = 'Hello World'; // I need access to this variable in the callback
//registering class member function as callback
$('div').draggable({drag:this.onDrag});
this.onDrag = function(event,ui){
alert(this.message); // 'this' is jquery object, not MyClass instance;
}
}
P.S。带有' MyClass'的全局变量实例或将实例存储到数据中是不可取的。
谢谢!
答案 0 :(得分:4)
这里最好的选择(IMO)只是为了保留另一个参考,我更喜欢self
,如下所示:
function MyClass(){
var self = this;
this.message = 'Hello World'; // I need access to this variable in the callback
//registering class member function as callback
$('div').draggable({drag:this.onDrag});
this.onDrag = function(event,ui){
alert(self.message);
}
}
另一种方法是搞乱另一个你并不真正控制的插件的上下文(再次,IMO)它并不是真的有必要,只是有一个访问你的类的另一个参考就像在很多情况下一样容易和不那么混乱。