回到课程
本资料仅提供以下语言版本:English, 日本語。请 帮助我们 将其翻译为 简体中文 版本。

写在哪里?

重要程度: 5

rabbit 继承自 animal

如果我们调用 rabbit.eat(),哪一个对象会接收到 full 属性:animal 还是 rabbit

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

let rabbit = {
  __proto__: animal
};

rabbit.eat();

答案:rabbit

这是因为 this 是“点”之前对象,因此 rabbit.eat() 修改了 rabbit

属性查找和执行是两件不同的事情。 rabbit.eat 方法在原型中被第一个找到,然后执行 this=rabbit