Takip et

JavaScript’te ‘this’ Anahtar Kelimesi: Tam Anlayış

JavaScript’te ‘this’ Anahtar Kelimesi: Tam Anlayış

JavaScript’teki this anahtar kelimesi, yeni başlayanlar için oldukça kafa karıştırıcı olabilir. Ancak, bir kez kavrandığında, JavaScript’in temel dinamiklerinden biri olarak önemini anlamak kolaylaşacaktır. Bu makalede, this‘in farklı bağlamlardaki davranışını örneklerle açıklayarak, bu konuyu tamamen anlamanıza yardımcı olacağım.

this‘in Bağlamı Anlamak

this anahtar kelimesinin değeri, fonksiyonun nasıl çağrıldığına bağlıdır. Başka bir deyişle, this‘in değeri bağlam tarafından belirlenir. Bu bağlam, fonksiyon çağrısı sırasında değişebilir. İşte en yaygın bağlamlar:

1. Global Bağlam:

Fonksiyon bir nesneye ait değilse ve global olarak çağrılırsa, this genellikle global nesneyi (tarayıcıda window) işaret eder. Ancak, “use strict” modu kullanıyorsanız, this undefined olur.


function myFunction() {
  console.log(this); // Tarayıcıda window, strict modda undefined
}

myFunction(); 

2. Metot Bağlamı:

Bir fonksiyon, bir nesnenin metodu olarak tanımlanmışsa, this o nesneyi işaret eder. Bu, nesneye ait özelliklere ve metotlara erişim sağlar.


const myObject = {
  name: "Fatih Soysal",
  greet: function() {
    console.log("Merhaba, adım " + this.name); 
  }
};

myObject.greet(); // Merhaba, adım Fatih Soysal

3. call(), apply() ve bind() Metotları:

Bu metotlar, this‘in değerini açıkça belirlememize olanak tanır. call() ve apply() fonksiyonu hemen çağırırken, bind() yeni bir fonksiyon döndürerek this‘i bağlar.


function greet(greeting) {
  console.log(greeting + ", adım " + this.name);
}

const person = { name: "Ahmet" };

greet.call(person, "Selam"); // Selam, adım Ahmet
greet.apply(person, ["Merhaba"]); // Merhaba, adım Ahmet
const boundGreet = greet.bind({ name: "Ayşe" }, "Günaydın");
boundGreet(); // Günaydın, adım Ayşe

4. Oluşturucu Fonksiyonlar (Constructor Functions):

new anahtar kelimesiyle çağrılan fonksiyonlar, this anahtar kelimesi ile yeni bir nesne oluşturur. Bu yeni nesne, fonksiyonun içinde tanımlanan özelliklere sahip olur.


function Person(name) {
  this.name = name;
}

const fatih = new Person("Fatih");
console.log(fatih.name); // Fatih

5. Ok Fonksiyonları (Arrow Functions):

Ok fonksiyonlarında this, çevredeki (lexical) bağlama bağlıdır. Kendi this bağlamları yoktur. Bu nedenle, ok fonksiyonlarını kullanırken this‘in beklenmedik davranışlar sergilemesine dikkat etmek önemlidir.


const myObject = {
  name: "Fatih Soysal",
  greet: function() {
    setTimeout(() => { // Ok fonksiyonu kullanımı
      console.log("Merhaba, adım " + this.name); // this, myObject'i işaret eder
    }, 1000);
  }
};

myObject.greet(); // Merhaba, adım Fatih Soysal (1 saniye sonra)

Sonuç

Umarım bu makale, JavaScript’teki this anahtar kelimesini daha iyi anlamanıza yardımcı olmuştur. this‘in davranışını anlamak, JavaScript ile daha etkili ve güvenilir kod yazmanız için önemlidir. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Ayrıca, konuyla ilgili daha derinlemesine bilgi edinmek için bu kaynak faydalı olabilir.

Önemli Not: this‘in davranışı bazen beklenmedik sonuçlar doğurabilir. Bu nedenle, kodunuzu dikkatlice yazmalı ve this‘in her bağlamda nasıl davrandığını iyi anlamalısınız.

#Etiketler: JavaScript, this, anahtar kelime, bağlam, scope, prototip, prototip zincirleme, örnekler, rehber, programlama, web geliştirme


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.