あなたは何であるかを言っていません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
}
});
}
};
クロージャーの詳細:クロージャーは複雑ではありません
しかし、私が間違っていて、実際にプロトタイプを更新したい場合は、次のようにします。
var MyClass = Class.create();
MyClass.prototype = {
myAttr:0,
setMyAttr: function(){
jQuery.ajax({
url:'data.php',
success:function(data) {
MyClass.prototype.myAttr = data;
}
});
}
};
(プロトタイプへの割り当ての最後にあることに注意してください;
。自動セミコロン挿入であるホラーに依存しないことを強くお勧めします。)