darsga qaytish

Chaqiruvlar o'rtasidagi farq

Keling, yangi rabbit obyekti yarataylik:

function Rabbit(name) {
  this.name = name;
}
Rabbit.prototype.sayHi = function () {
  alert(this.name);
};

let rabbit = new Rabbit("Rabbit");

Ushbu chaqiruvlar xuddi shu narsani qiladimi yoki yo’qmi?

rabbit.sayHi();
Rabbit.prototype.sayHi();
Object.getPrototypeOf(rabbit).sayHi();
rabbit.__proto__.sayHi();

Birinchi chaqiruvda this == rabbit, boshqalarida this Rabbit.prototype ga teng, chunki bu aslida nuqta oldidagi obyekt.

Shunday qilib, faqat birinchi chaqiruv Rabbit, boshqalari undefined ni ko’rsatadi:

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