1

重複の可能性:オブジェクトのメソッドへの参照を呼び出すと
、メソッドが変更されるのはなぜですか?this

私は JavaScript を少し知っていると思っていましたが、変数からメソッドを実行すると、これが変わることに気付きました。これに関する情報を見つけようとしましたが、ほとんどの記事では、呼び出し、適用、バインド、イベント ハンドラー/コールバックなどについて説明しています。

var dog = {

  bark: function(){
    console.log('woof');
  },

  speak: function(){
    this.bark();
  }

};

// Test 1
dog.speak(); //woof


// Test 3
var speak = dog.speak
speak(); //TypeError: Object #<Object> has no method 'bark'
4

1 に答える 1

-1

varを話す以外のものとして設定する必要があると思います。そして、あなたは行く必要があります:

var speaking_var = dog.speak();
speaking_var();

タイプミスを修正してください (あなたは の;後に忘れていましたvar speak = dog.speak)

于 2012-05-06T21:52:59.857 に答える