Obje tanımında "this" kullanamak.
AÅaÄıda kullaniciOlustur obje döndermektedir.
refâe ulaÅıldıÄında ne döner? Neden?
function kullaniciOlustur() {
return {
isim: "İhsan",
ref: this
};
};
let kullanici = kullaniciOlustur();
alert( kullanici.ref.isim ); // Sonuç nedir?
Cevap: Hata.
Deneyin:
function kullaniciOlustur() {
return {
isim: "İhsan",
ref: this
};
};
let kullanici = kullaniciOlustur();
alert( kullanici.ref.isim ); // Error: Cannot read property 'name' of undefined
Ãünkü thisâi tanımlayan kurallar obje tanımına bakmaz.
Kodda kullaniciOlustur() içindeki this undefinedâdır. Ãünkü bu fonksiyon olarak çaÄırıldı metod olarak deÄil!.
Ve objet tanımının thisâe doÄrudan bir etkisi yoktur. this tüm fonksiyonu kapsar, kod bloÄu veya obje tanımı bunu etkilemez.
Ãyleyse, ref: this aslında fonksiyonun thsi deÄerini alır.
Åimdi tersi bir duruma bakalım:
function kullaniciOlustur() {
return {
isim: "İhsan",
ref() {
return this;
}
};
};
let kullanici = kullaniciOlustur();
alert( kullanici.ref().isim ); // İhsan
Åimdi çalıÅıyor çünkü kullanici.ref() metod oldu. thisâin deÄeri de . dan öncesi olarak tanımlandı.
