Derse geri dön
Bu materyal sadece عربي, English, Español, فارسی, Français, Indonesia, Italiano, 日本語, 한국어, Русский, Українська, 简体中文 dillerinde mevcuttur. Lütfen Türkçe diline çevirmek için bize yardım edin.

"this" in değerini açıklayın

önem: 3

Aşağıdaki amaç obj.selamVer() in 4 defa çağırılmasıdır.

Fakat (1) ve (2) , (3) ve (4) ten farklı çalışmaktadır. Neden?

let obj, metod;

obj = {
  selamVer: function() { alert(this); }
};

obj.selamVer();               // (1) [object Object]

(obj.selamVer)();             // (2) [object Object]

(metod = obj.selamVer)();    // (3) undefined

(obj.selamVer || obj.yolcuEt)(); // (4) undefined

Açıklama:

  1. Normal metod çağrısı yapılmaktadır.

  2. Aynı şekilde çağrı yapılmaktadır. Tek fark parantez ve bu parantez sadece sıralama için kullanılmaktadır. Bir anlam ifade etmez.

  3. Daha karmaşık bir çağrı, (ifade).metod(). Eğer bu metod iki satıra ayrılırsa çalışır:

    f = obj.selamVer; // ifadeyi hesapla
    f();        // çağır

    Burada f() fonksiyon olarak this ifadesi olmadan çalıştırılmıştır.

  4. Aynı şekilde . nın sol tarafında bir ifade bulunmaktadır.

(3) ve (4) ün davranışını açıklamak için dönen referans tipini tekrar çalıştırmak gereklidir.

Metod çağrısı haricinde her işlem( atama = veya ||) bu fonksiyonu normal değere döndürür. Bundan dolayı da this’in tanımsız kalmasına yol açar.