Ми хочемо зробити цей проєкт з відкритим кодом доступним для людей у всьому світі.

Допоможіть перекласти цей підручник вашою мовою!

назад до уроку

Різниця між викликами

важливість: 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