1

別のインスタンス メソッドのイベント ハンドラー内でインスタンス メソッドを呼び出そうとしていますが、関数が未定義になっています。これは、イベント ハンドラーで "this" がインスタンスではなく DOM 要素を参照しているためだと思います。

function MyObject(something) {
   this.something = something;
   this.value = 'abc';
}

MyObject.prototype.Init = function() {

  $(this.something).click(function() {
     this.DoSomething();
  });
};

MyObject.prototype.DoSomething = function() {
 //do something
};

「これ」がインスタンスを指すようにする方法はありますか?

4

1 に答える 1

3

以外の名前の別の変数を定義thisし、内部関数で参照するコンテキストを割り当てます。

MyObject.prototype.Init = function() {
  var scope = this;
  $(this.something).click(function() {
     scope.DoSomething();
  });
};
于 2013-06-15T13:04:28.103 に答える