La diferencia entre llamadas
importancia: 5
Creemos un nuevo objeto rabbit:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert(this.name);
};
let rabbit = new Rabbit("Conejo");
Estas llamadas hacen lo mismo o no?
rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();
La primera llamada tiene this == rabbit, las otras tienen this igual a Rabbit.prototype, porque en realidad es el objeto antes del punto.
Entonces, solo la primera llamada muestra Rabbit, las otras muestran undefined:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert( this.name );
}
let rabbit = new Rabbit("Conejo");
rabbit.sayHi(); // Conejo
Rabbit.prototype.sayHi(); // undefined
Object.getPrototypeOf(rabbit).sayHi(); // undefined
rabbit.__proto__.sayHi(); // undefined