[英]Javascript class ajax callback this that
使用Javascript
var MyClass = function(){
var that = this;
this.bool = false;
}
MyClass.prototype.ajax = function(url, callback){
$.ajax({
url: url,
success: callback
});
}
MyClass.prototype.ajaxCall = function(){
this.ajax("ajax.php", this.ajaxCallback);
}
MyClass.prototype.ajaxCallback = function(data){
that.bool = true;
}
現在問題出在這里
that.bool = true;
我做了一個jsfiddle。 http://jsfiddle.net/J3P8t/
錯誤未捕獲ReferenceError:未定義
您可以擺脫that
然后執行以下操作:
MyClass.prototype.ajaxCall = function(){
this.ajax("", $.proxy(this.ajaxCallback, this)); //or this.ajaxCallback.bind(this)
}
MyClass.prototype.ajaxCallback = function(data){
this.bool = true;
}
要么
MyClass.prototype.ajaxCall = function(){
var self = this;
this.ajax("your url", function(){
self.ajaxCallback.apply(self, arguments);
});
}
MyClass.prototype.ajaxCallback = function(data){
console.log(data);
this.bool = true;
}
that
是在MyClass
構造函數的范圍內創建的局部變量,該變量在外部不可用。 因此,訪問未聲明的變量將引發錯誤。 使用$ .proxy或function.prototype.bind,您將上下文綁定到函數引用。 因此,在jq ajax調用中使用它會將上下文設置為MyClass實例的上下文,而不是jqxhr對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.