Takip et

JavaScript Getter ve Setter’lar: Nesne Özelliklerine Erişimi Kontrol Etme

JavaScript Getter ve Setter’lar: Nesne Özelliklerine Erişimi Kontrol Etme

Merhaba! Ben Fatih Soysal ve bugün JavaScript’teki getter ve setter’lar hakkında detaylı bir makale yazacağım. Getter ve setter’lar, nesne özelliklerine erişimi ve değerlerini değiştirmeyi kontrol etmenizi sağlayan güçlü araçlardır. Bu sayede kodunuz daha güvenli, daha okunabilir ve daha sürdürülebilir hale gelir. Öncelikle temel kavramları anlayalım, ardından daha gelişmiş kullanım örneklerine geçelim.

Getter’lar: Özellik Değerlerine Erişmek

Bir getter, bir nesne özelliğine erişildiğinde otomatik olarak çalıştırılan bir fonksiyondur. Bu, özelliğin doğrudan erişilmesi yerine, getter fonksiyonu aracılığıyla dolaylı erişim sağlanması anlamına gelir. Örneğin, bir person nesnesinin fullName özelliğinin getter’ı varsa, person.fullName yazdığınızda getter fonksiyonu çalışır ve firstName ve lastName özelliklerini birleştirip tam adı döndürür. Bu yaklaşım, veri bütünlüğünü ve tutarlılığını sağlar.


class Person {
  constructor(firstName, lastName) {
    this.firstName = firstName;
    this.lastName = lastName;
  }

  get fullName() {
    return ${this.firstName} ${this.lastName};
  }
}

const person = new Person("Fatih", "Soysal");
console.log(person.fullName); // Çıktı: Fatih Soysal

Gördüğünüz gibi, fullName özelliğine doğrudan erişim sağladık, ancak aslında fullName getter fonksiyonu çalıştı ve sonucu bize verdi. Bu sayede, firstName ve lastName özelliklerinde değişiklik olduğunda, fullName özelliğinin değeri de otomatik olarak güncellenir. Bu, kodumuzun daha az hata yapmasını sağlar. Ayrıca, veri işleme mantığını getter’a yerleştirerek kodumuzu daha düzenli hale getirebiliriz.

Setter’lar: Özellik Değerlerini Değiştirmek

Setter’lar, bir nesne özelliğinin değerini değiştirmek istediğimizde devreye girer. Bir setter fonksiyonu, özelliğin yeni değerini alır ve bu değeri nesneye atamadan önce bazı işlemler yapabilir. Örneğin, bir yaş özelliği için negatif bir değer atanmasını engelleyebiliriz.


class Person {
  constructor(age) {
    this._age = age; // Özelliği _ ile başlatarak private olarak işaretledik
  }

  set age(newAge) {
    if (newAge >= 0) {
      this._age = newAge;
    } else {
      console.error("Yaş negatif olamaz!");
    }
  }

  get age() {
    return this._age;
  }
}

const person2 = new Person(30);
person2.age = 35;  // Setter çalışır
console.log(person2.age); // Çıktı: 35

person2.age = -5; // Setter çalışır ve hata mesajı verir
console.log(person2.age); // Çıktı: 35 (değer değişmedi)

Yukarıdaki örnekte, age setter’ı negatif değer atamalarını engelledi. Bu, veri bütünlüğünü korumak için çok önemli bir mekanizmadır. Ayrıca, setter’lar özelliğin değerini atama işleminden önce veya sonra başka işlemler yapmamızı da sağlar. Örneğin, bir veritabanına güncelleme gönderme veya bir olaya abone olma gibi işlemler yapabiliriz.

Getter ve Setter’ların Avantajları

Getter ve setter’lar, kodumuzun daha güvenilir, okunabilir ve sürdürülebilir olmasını sağlar. Veri bütünlüğünü korur, kodun karmaşıklığını azaltır ve kapsüllemeyi (encapsulation) destekler. Ayrıca, gelecekteki değişikliklere uyum sağlamayı kolaylaştırırlar. Bu nedenle, büyük ve karmaşık projelerde kullanımı şiddetle önerilir.

Umarım bu makale, JavaScript getter ve setter’lar hakkında daha fazla bilgi edinmenize yardımcı olmuştur. Daha fazla bilgi için fatihsoysal.com sitesini ziyaret edebilirsiniz. Ayrıca, JavaScript’in derinliklerine inmek için MDN Web Docs sitesini inceleyebilirsiniz.

#Etiketler

#JavaScript #Getter #Setter #NesneYönelimliProgramlama #OOP #Programlama #WebGeliştirme #Kodlama #FatihSoysal

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

Gönder

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.
Exit mobile version