torna alle lezioni

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.