CodeBlanks Logo Icon CodeBlanks

Arrow ile this

Ok fonksiyonunda this bağlamını öğrenirsin.

Arrow ile this

Ok fonksiyonlarının kendi this'i yoktur. this, çevreleyen kapsamdan (sözcüksel bağlama) alınır. Düz fonksiyonlarda this çağrı yerine göre belirlenir.

const nesne = {
  ad: "Ali",
  goster: function(): string {
    const ok = (): string => this.ad;  // this = nesne
    return ok();
  }
};
nesne.goster();  // "Ali"

Ok fonksiyonu, this'i içinde bulunduğu kapsamdan miras alır.

Callback'lerde ok fonksiyonu

Bir metodun içindeki iç içe callback'lerde düz fonksiyon kullanırsan this kaybolur. Ok fonksiyonu ise metodun this'ini korur, bu yüzden callback'lerde ok fonksiyonu tercih edilir.

const nesne = {
  ad: "Ali",
  goster: function(): void {
    [1].forEach(() => console.log(this.ad));
  }
};

Ok fonksiyonu callback içinde this'i kaybetmez.

Uygulama Ok fonksiyonu ile this kullan

nesne adında bir nesne tanımla; ad özelliği "Ali" olsun. goster metodu düz fonksiyon olsun ve içinde bir ok fonksiyonu this.ad döndürsün. nesne.goster() çağrısının sonucunu console.log ile yazdır.

Başlangıç kodu

index.ts
// nesne adında bir nesne tanımla
// ad özelliği "Ali" olsun
// goster metodu düz fonksiyon olsun
// goster içinde ok fonksiyonu this.ad döndürsün
// nesne.goster() sonucunu yazdır

Örnek çözüm

index.ts
const nesne = {
    ad: "Ali",
    goster: function(): string {
        const ok = (): string => this.ad;
        return ok();
    }
};
console.log(nesne.goster());

Beklenen çıktı

Ali

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir ok fonksiyonunda <code>this</code> nasıl belirlenir?

  • Çağrı yerine göre belirlenir
  • Çevreleyen kapsamdan alınır Doğru cevap
  • Her zaman global nesne olur
  • Her zaman undefined olur

Açıklama: Ok fonksiyonu kendi <code>this</code>'ini yaratmaz; çevreleyen kapsamın <code>this</code>'ini sözcüksel olarak alır. Düz fonksiyonlarda ise <code>this</code> çağrı yerine göre değişir.

2 Ok fonksiyonunda this özelliği

Soru
const nesne = {
  ad: "Ali",
  goster: function(): string {
    const ok = (): string => this.____;
    return ok();
  }
};
Cevap
const nesne = {
  ad: "Ali",
  goster: function(): string {
    const ok = (): string => this.ad;
    return ok();
  }
};

Açıklama: Nesnenin <code>ad</code> özelliği vardır; ok fonksiyonu sözcüksel <code>this</code> ile <code>this.ad</code> döndürür. <code>name</code>, <code>yas</code> ve <code>id</code> nesnede bulunmaz.

3 this bağlama kavramları

Kavram Anlamı
Arrow function this Sözcüksel kapsamdan alınır
Regular function this Çağrı yerine göre belirlenir
Lexical scope Çevreleyen kapsamın this'i
this binding Ok fonksiyonunda sözcüksel

Başlangıç bölümündeki tüm dersler