JavaScript prototype Kullanımı
JavaScript "prototype" özelliği, bir sınıf veya nesnenin özelliklerini ve metodlarını eklemek veya değiştirmek için kullanılır. Bu özellik, bir sınıf veya nesnenin temel yapısını değiştirmek yerine, onun üzerine ek özellikler ve metodlar eklemek içindir.
Örneğin, bir "Kisi" sınıfı oluşturalım ve bu sınıfın "ad" ve "yas" özellikleri olsun. Ayrıca, bu sınıfın "Selam" isimli birde metodu olsun. Aşağıdaki kod, "Kisi" sınıfını, bu sınıfın özelliklerini ve metodlarını gösterir..
class Kisi
{
constructor(ad, yas)
{
this.ad = ad;
this.yas = yas;
}
Selam()
{
console.log(`Selam, benim adım ${this.ad} ve yaşım ${this.yas}.`);
}
}
Bu sınıfı kullanarak bir nesne oluşturalım ve özelliklerini ve metodunu kullanalım..
let kisi1 = new Kisi("Jale", 33);
console.log(kisi1.ad); // "Jale"
console.log(kisi1.yas); // 33
kisi1.Selam(); // ""Selam, benim adım Jale ve yaşım 33.""
Ancak, eklemek istediğimiz bir özellik veya metod varsa, prototype özelliğini kullanabiliriz. Örneğin, "Kisi" sınıfına "adres" özelliği eklemek istiyoruz. Aşağıdaki kodu kullanabiliriz...
Kisi.prototype.adres = "";
Bu kod, "Kisi" sınıfına "adres" özelliği ekler. Bu özellik, tüm "Kisi" nesnelerine uygulanır. Ayrıca, bu sınıfına bir de metod eklemek istiyorsak aşağıdaki gibi bir kod yazabiliriz.
Kisi.prototype.setAdres = function(adres) {
this.adres = adres;
}
Son olarak test edelim..
Kisi.prototype.adres = "Varsayılan Adres";
console.log(kisi1.adres); //Varsayılan Adres
kisi1.setAdres("Değişmiş adres");
console.log(kisi1.adres); //Değişmiş adres
Yukarıdaki örnekte ilk önce adres değişkenimize "Varsayılan Adres" değerini atadık. Sonrada bu değişkenin değerini "setAdres()" fonksiyonu ile değiştirdik. değişkenimiz ve fonksiyonumuz "Kisi" sınıfı yaratıldığında mevcut değildi. 2 sinide "prototype" ile sonrada sınıfımıza dahil ettik ve kullandık.
Tüm koda aşağıdan ulaşabilirsiniz..
class Kisi
{
constructor(ad, yas)
{
this.ad = ad;
this.yas = yas;
}
Selam()
{
console.log(`Selam, benim adım ${this.ad} ve yaşım ${this.yas}.`);
}
}
let kisi1 = new Kisi("Jale", 33);
console.log(kisi1.ad); // "Jale"
console.log(kisi1.yas); // 33
kisi1.Selam(); // ""Selam, benim adım Jale ve yaşım 33.""
Kisi.prototype.adres = "Varsayılan Adres";
console.log(kisi1.adres); //Varsayılan Adres
Kisi.prototype.setAdres = function(adres) {
this.adres = adres;
}
kisi1.setAdres("Değişmiş adres");
console.log(kisi1.adres); //Değişmiş adres
Javascript'de prototype özelliği, bir sınıf veya nesnenin özelliklerini ve metodlarını eklemek veya değiştirmek için kullanılır. Bu sayede, sınıflar ve nesneler arasında kalıtım sağlanır ve aynı özellikler ve metodlar, birden fazla nesne veya sınıf tarafından kullanılabilir.
Ayrıca, prototype özelliği, JavaScript'in önyükleme (overriding) mekanizmasını kullanarak sınıf veya nesnenin özelliklerini ve metodlarını değiştirmek için de kullanılabilir. Örneğin, bir sınıfın metodunu kalıtım alan bir sınıf tarafından yeniden tanımlanarak değiştirmek mümkündür.
Sonuç olarak "prototype" özelliği ile kodun daha okunaklı, daha anlaşılır ve daha modüler hale gelmesini sağlamak mümkündür.