1

私はこの答えを見つけるためにグーグルで正しいキーワードを選択できないようですので...

選択ボックスの変更を処理するために、クラス内に一連の関数を作成しています。これは、JavaScriptがどのようにレイアウトされているかを示す非常に簡単な例です。

function example(n) {
  this.name = n;
}

example.prototype.setChange(i) {
  var c = document.getElementById('test' + i );
  for ( var x = 0; x < 10; x++
    c.options[0] = new Option(x, x);
  c.change = this.doChange;
}

example.prototype.doChange() {
  alert(this.name);
}

'this'にアクセスしようとするまで、すべてが機能します。doChangeが呼び出されると、これはクラスではなく実際のselecthtmlオブジェクトになります。これはイベントであるため、.call(this)を使用して適切なバインディングを強制することはできません。

4

1 に答える 1

1

あなたはすることによってあなたを失いthisますthis.doChange。次のようなものを使用します

function example(n) {
 this.name = n;

  var self = this;
  this.doChange = function () {
    alert(self.name);
 }
} 
于 2013-02-25T22:17:30.253 に答える