它在哪里写?
重要性: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
执行。