在哪裡寫的?
重要性: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
執行。