你还没有说什么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 –