Різниця між викликами
важливість: 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