我想在$ .get()的回调中使用this
关键字。我的代码结构是
var myObject = {
get: function() {
$.get(server,data,function(data,status) {
this.callback();
});
},
callback: function() {
}
}
我不想使用myObject.callback()
。有没有办法使用this.callback()
完成?
答案 0 :(得分:5)
在将回复函数传递给this
之前,您可以.bind()
$.get()
的值{/ 1}}:
var myObject = {
get: function() {
$.get(server, data, function(data, status) {
this.callback();
}.bind(this));
}
callback: function {
// do something here
}
}
当然,假设您自己的this
函数中myObject.get()
的值是正确的,如果您使用"点符号"为myObject.get()
。
另请注意,如果你的匿名函数唯一做的就是调用另一个函数,那么你可以直接绑定另一个函数:
var myObject = {
get: function() {
$.get(server, data, this.callback.bind(this));
}
callback: function {
// do something here
}
}
答案 1 :(得分:2)
选项#1 - 在变量(this
)中缓存_this
:
var myObject = {
get: function() {
var _this = this;
$.get(server, data, function(data, status) {
_this.callback(); // this keyword refers to Window obj not myObject
});
}
callback: function {
// do something here
}
}
选项#2 - 使用jQuery的.proxy
方法:
var myObject = {
get: function() {
$.get(server, data, $.proxy(function(data, status) {
_this.callback(); // this keyword refers to Window obj not myObject
}), this);
}
callback: function {
// do something here
}
}
(编辑 - 感谢nnnnnn)