Titanium で開発しているときに、OOP JavaScript とイベント ハンドラー スコープでこの奇妙な動作に遭遇しました。これは私のコードです:
MyClass = function()
{
this.var1 = '50';
this.button = Ti.UI.createButton({
...
});
this.button.parentRef = this;
this.button.addEventListener('click', function(e){
var self = e.source.parentRef;
console.log(self.var1);
console.log(self.var2);
});
this.var2 = 'Test';
...
/* this.button is then added to a view */
};
...
var c = new MyClass();
...
ボタンをクリックすると、コンソールに次のように表示されます。
50
Test
しかし、実際の結果は次のとおりです。
50
<null>
課題を移動した場合
this.var2 = 'テスト'
の前に
this.button.addEventListener
ステートメント、結果は次のとおりです。
50
Test
this.button.parentRef = この割り当てはコピーによるものであり、参照によるものではないようです...
この動作の原因は何ですか?