返回课程

它在哪里写?

重要性: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 执行。