このレッスンに戻る

どこで書いたらよいでしょうか

重要度:5

animalから継承されたrabbitがあります。

rabbit.eat()と呼び出した場合、fullプロパティを受け取るオブジェクトはanimalですか、それともrabbitですか。

let animal = {
  eat() {
    this.full = true;
  }
};

let rabbit = {
  __proto__: animal
};

rabbit.eat();

解答はrabbitです。

これは、thisはドットの前にあるオブジェクトであるため、rabbit.eat()rabbitを変更するからです。

プロパティの参照と実行は、2つの異なるものです。

rabbit.eatメソッドは、まずプロトタイプで見つかり、次にthis=rabbitで実行されます。