你還沒有說什麼Class.create
是(JavaScript本身沒有),但我認爲這不是問題的重要。
我假設你想在實例上設置myAttr
,而不是原型(但如果我錯了,請參閱下面的內容)。最簡單的方法是利用這樣一個事實,即您的success
回調已經在調用setMyAttr
的上下文中關閉,因此您將變量設置爲this
(因爲this
在success
回調中會有所不同),並使用以下代碼:
var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
var self = this; // <== Set the variable
jQuery.ajax({
url:'data.php',
success:function(data) {
self.myAttr = data; // <== Use it
}
});
}
};
更多關於關閉:Closures are not complicated
但是,如果我錯了,你就真的想更新,而不是原型:
var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
jQuery.ajax({
url:'data.php',
success:function(data) {
MyClass.prototype.myAttr = data;
}
});
}
};
(注意;
在分配到原型的末尾。我極力主張不依賴是自動插入分號恐怖)
'MyClass.prototype.myAttr = ...',也許? –
請注意,您將遇到計時問題。在ajax完成之前,'myAttr'將爲0. –
是的,我正在尋找'MyClass.prototype.myAttr = ...'。 Thx爲您提供幫助。 :D –