Dove andrà a scrivere?
importanza: 5
Abbiamo un oggetto rabbit che eredita da animal.
Se invochiamo rabbit.eat(), quale oggetto riceverà la proprietà full: animal o rabbit?
let animal = {
eat() {
this.full = true;
}
};
let rabbit = {
__proto__: animal
};
rabbit.eat();
La risposta: rabbit.
Questo perché this fa riferimento all’oggetto prima del punto, quindi rabbit.eat() modifica rabbit.
La ricerca della proprietà e la sua esecuzione sono cose differenti.
Il metodo rabbit.eat viene prima cercato nel prototype, e successivamente eseguito con this=rabbit.