JavaScript OOP'de Setter ve Getter'ların Avantajları
Önceki derste her bir özellik için getter ve setter oluşturduk. Aklınıza şu soru gelebilir: neden böyle karmaşıklıklara ihtiyaç var? Çünkü aslında aynı etki, özellikleri özel yerine kamuya açık yaparak da elde edilebilir.
Olay şu ki, getter ve setter'ların bir avantajı var: bir özelliğe erişmeden önce bazı kontroller yapabilirsiniz. Örneğin, bizim durumumuzda isim ve soyadı yazarken, yeni değerin boş bir dize olmadığını kontrol edebiliriz:
class User {
#name;
#surn;
setName(name) {
if (name.length > 0) {
this.#name = name;
} else {
throw new Error('name is incorrect');
}
}
setSurn(surn) {
if (surn.length > 0) {
this.#surn = surn;
} else {
throw new Error('surn is incorrect');
}
}
getName() {
return this.#name;
}
getSurn() {
return this.#surn;
}
}
Bunun nasıl çalıştığını test edelim. Önce sınıfın bir nesnesini oluşturalım:
let user = new User;
Şimdi doğru bir değer yazmayı deneyelim:
user.setName('john');
Ve şimdi yanlış bir değer yazmayı deneyelim:
user.setName(''); // hata
Employee sınıfında, yaş setter'ında
yaşın 0 ile 120 arasında
olması gerektiğini kontrol edin.
Employee sınıfında, maaş getter'ında,
maaş okunurken değerinin sonuna
dolar işareti eklenmesini sağlayın.