Різниця між викликами
важливість: 5
Створимо новий об’єкт rabbit
:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert(this.name);
};
let rabbit = new Rabbit("Кріль");
Чи виконують виклики нижче однакову дію чи ні?
rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();
Перший виклик має this == rabbit
, інші мають this
рівний Rabbit.prototype
, тому що це об’єкт перед крапкою.
Таким чином тільки перший виклик покаже Кріль
, інші покажуть undefined
:
function Rabbit(name) {
this.name = name;
}
Rabbit.prototype.sayHi = function() {
alert( this.name );
}
let rabbit = new Rabbit("Кріль");
rabbit.sayHi(); // Кріль
Rabbit.prototype.sayHi(); // undefined
Object.getPrototypeOf(rabbit).sayHi(); // undefined
rabbit.__proto__.sayHi(); // undefined