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
.