4

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 = この割り当てはコピーによるものであり、参照によるものではないようです...

この動作の原因は何ですか?

4

1 に答える 1