tilbage til lektionen

Forskellen mellem kald

vigtighed: 5

Lad os oprette et nyt rabbit objekt:

function Rabbit(name) {
  this.name = name;
}
Rabbit.prototype.sayHi = function() {
  alert(this.name);
};

let rabbit = new Rabbit("Kanin");

Gør disse kald det samme eller gør de ikke?

rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();

Det første kald har this == rabbit, de andre har this lig med Rabbit.prototype, fordi det faktisk er objektet før punktummet.

Så kun det første kald viser Rabbit, andre viser undefined:

function Rabbit(name) {
  this.name = name;
}
Rabbit.prototype.sayHi = function() {
  alert( this.name );
}

let rabbit = new Rabbit("Kanin");

rabbit.sayHi();                        // Kanin
Rabbit.prototype.sayHi();              // undefined
Object.getPrototypeOf(rabbit).sayHi(); // undefined
rabbit.__proto__.sayHi();              // undefined