La différence entre les appels
importance: 5
Créons un nouvel objet rabbit
:
function Rabbit(name) { this.name = name; } Rabbit.prototype.sayHi = function() { alert(this.name); }; let rabbit = new Rabbit("Rabbit");
Ces appels font-ils la même chose ou non ?
rabbit.sayHi(); Rabbit.prototype.sayHi(); Object.getPrototypeOf(rabbit).sayHi(); rabbit.__proto__.sayHi();
Le premier appel a this==rabbit
, les autres ont this
égal à Rabbit.prototype
, car il s’agit en fait de l’objet avant le point.
Ainsi, seul le premier appel indique Rabbit
, les autres affichent undefined
:
function Rabbit(name) { this.name = name; } Rabbit.prototype.sayHi = function() { alert( this.name ); } let rabbit = new Rabbit("Rabbit"); rabbit.sayHi(); // Rabbit Rabbit.prototype.sayHi(); // undefined Object.getPrototypeOf(rabbit).sayHi(); // undefined rabbit.__proto__.sayHi(); // undefined