Derse geri dön

Çağrılar arasındaki farklar

önem: 5

Yeni bir rabbit objesi yaratalım:

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

let rabbit = new Rabbit("Rabbit");

Aşağıdaki çağrılar aynı şeyleri yapar mı yapmaz mı?

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

İlk çağrı this == rabbit'e sonrakiler ise this eşittir Rabbit.prototype'a olacak çekilde tanımlanmıştır. Daha önce de bahsettiğimiz gibi asıl objenokta`'dan önceki bölümdür.

Bundan dolayı sadece ilk çağrı Rabbit'i gösterir. Diğerleri ise undefined'dır.

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