0Pricing
JavaScript Academy · Ders

Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış

Dinamik this'in çağrı konumuna nasıl bağlı olduğunu, ok işlevlerinin ise sözcüksel this'i nasıl yakaladığını görün; küçük ve anlaşılır örnekler kullanın.

Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 3 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 3 dersten oluşur.

Genel bakış

Hedef: this ifadesinin hangi durumda nereye işaret ettiğini bilmek.

  • Dinamik this: çağrı noktası tarafından belirlenir
  • Ok işlevi this'i: sözcüksel olarak yakalar
  • Yaygın sorun: yöntem çıkarma this'i kaybettirir
  • Geri çağırmalarda this'i korumak için ok işlevlerini kullanın
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 1

Dinamik this gösterimi

Dinamik this: obj.method() olarak çağırmak, this = obj ayarını yapar; işlevi çıkarmak nesneyi kaybettirir.

// Dynamic this depends on HOW we call the function
const person = {
  name: "Ayla",
  say: function () {
    return "Hi " + this.name;
  }
};

console.log("method call:", person.say()); // "Hi Ayla"

// Extract then call: this is lost
const talk = person.say;
console.log("extracted call:", talk()); // likely "Hi undefined" in strict mode -> this is undefined
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 2

Ok işlevi = sözcüksel this

Bir ok işlevi, oluşturulduğunda this değerini çevredeki işlevin veya nesnenin kapsamından alır; çağrı sırasında değişmez.

// Arrow functions capture this from where they are created
const box = {
  label: "blue",
  showLater: function () {
    // Arrow keeps this === box
    const fn = () => "box:" + this.label;
    return fn();
  }
};

console.log("arrow captured this:", box.showLater()); // "box:blue"
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 3

Geri çağırmalar: this'i ok işlevleriyle koruyun

Geri çağırmalarda normal bir işlev çoğu zaman this değerini kaybeder; bir ok işlevi dıştaki this değerini olduğu gibi korur.

// Using a normal function in a callback can lose this
const widget = {
  id: 7,
  normal: function () {
    setTimeout(function () {
      // here this is not widget in many environments
      console.log("normal cb this.id:", this && this.id);
    }, 0);
  },
  arrow: function () {
    setTimeout(() => {
      // arrow keeps lexical this from arrow()
      console.log("arrow cb this.id:", this.id);
    }, 0);
  }
};

widget.normal();
widget.arrow();
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 4

Çıkarma için basit çözüm

Bir yöntem çıkarılırsa nesneyi kapsayan küçük bir ok işleviyle sarın veya onu bind edin (sonraki ders). Yeni başlayanlar için basit tutun.

// If you must extract, wrap with an arrow capturing the object
const account = {
  owner: "Mila",
  label: function () { return "Owner:" + this.owner; }
};

// Lost this:
const lost = account.label;
console.log("lost:", lost()); // "Owner:undefined" (this missing)

// Fixed: create an arrow that closes over account
const safe = () => account.label();
console.log("fixed via arrow wrapper:", safe());
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 5

İyi alışkanlıklar

İpuçları:

  • Yöntemler: obj.method() ile çağırın; böylece this nesne olur.
  • Geri çağırmalar: sözcüksel this değerini korumak için ok işlevlerini tercih edin.
  • Çıkarılan yöntemler this değerini kaybeder; bir ok işleviyle sarın veya bind edin.
Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 6

Ok işlevinde this testi

Hızlı kontrol: Ok işlevinde this davranışı.

Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 7

Özet

Özet: Normal işlevlerde this dinamiktir (çağrı noktası tarafından belirlenir), ok işlevlerinde ise sözcükseldir (oluşturulduğu yerde yakalanır). Geri çağırmalarda ok işlevlerini kullanın ve davranışı basit tutmak için çıkarılan yöntemleri sarın.

Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış — resim 8

Sıkça Sorulan Sorular

“Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış” dersi ücretsiz mi?

Evet — “Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 3 dersten oluşur.

“Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış” dersinde ne öğreneceğim?

Dinamik this'in çağrı konumuna nasıl bağlı olduğunu, ok işlevlerinin ise sözcüksel this'i nasıl yakaladığını görün; küçük ve anlaşılır örnekler kullanın. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 1. dersidir.

“Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Sözcüksel ve Dinamik this, Ok İşlevlerine Yeniden Bakış
  2. Yöntem Çıkarma Tuzakları, Kısmi Uygulama
  3. İşlevsel Alternatifler — Bağlam Aktarma, Kapanımlar, Küçük Yardımcılar
← JavaScript Academy Sayfasına Dön