Javascript Obje Protipleri ve Kullanımı (Object Prototypes)

Eğer blogumu takip ediyorsanız son zamanlarda ES6 ile alakadar yazılar yazıyordum. Bu yazıda hali hazırda ES5 standartı içinde kullanımı olan Javascript'in harika bir özelliği olan Prototipleme ve kullanımından bahsedeceğim.

Aslına bakarsanız prototipleme, ES6 ile gelen (gelecek olan) class özelliğinin sadece construction kısmını yapan, aynı prototip üzerinden birden fazla obje oluşturmanıza ve sonrasında bu objenin yapısını değiştirmenize olanak sağlayan bir sistem.

Basit bir örnek ile obje oluşturucu fonksiyonu ve bu fonksiyon ile yeni objenin nasıl oluşturulacağını gösterim;

function Kisi(ad, soyad, yas) {
    this.ad = ad;
    this.soyad = soyad;
    this.yas = yas;
}

var KisiObj = new Kisi("Ali", "Yılmaz", "21");
console.log(KisiObj.ad);

Gayet basit bir obje construct örneği ve konsolda Ali çıktısını verecektir.

Burada küçük bir parantez açarsak, prototip atamasında objelerin isimlerinin baş harflerini çoğu programcının büyük yaptığını görürsünüz, bazı programlama dillerinde bu syntax olarak zorunlu olmasına rağmen, Javascript'te böyle bir zorunluluk bulunmuyor, fakat diğer fonksiyonlardan ayrıt etmek amaçlı genellikle ilk harfi büyük yapıyoruz. (örn: Kisi)

Bazı durumlarda bu objeye yeni bir özellik veya metod eklemek durumunda kalabiliyoruz, onu da;

//Aynı fonksiyon burada

var KisiObj = new Kisi("Ali", "Yılmaz", "21");
KisiObj.tcno = "11111111111";
console.log(KisiObj.tcno);

Burada da oluşturduğumuz kişi objesi olan KisiObj için TC numarası değişkeni ekledik. Fakat burada dikkat edilmesi gereken, TC no özelliğinin sadece bu obje için eklenmiş olduğudur yani prototipi tekrar kullanarak oluşturulacak yeni obje için tcno değişkeni geçerli olmayacak.

Eğer bu özelliğin her zaman için construct edilmesini istiyorsak prototype özelliğini kullanmamız gerekiyor.

function Kisi(ad, soyad, yas) {
    this.ad = ad;
    this.soyad = soyad;
    this.yas = yas;
}

Kisi.prototype.tcno = "11111111111";

var KisiObj = new Kisi("Ali", "Yılmaz", "21");
console.log(KisiObj.tcno);

var KisiObj2 = new Kisi("Veli", "Yılmaz", "20");
console.log(KisiObj2.tcno);

Burada oluşturduğumuz iki obje için de tcno atanmış olacak ve bu değer 11111111111 olacak. Javascript'in sağladığı objelerin oluşturulmalarından sonra yeni değişken veya metodların objelere eklenebilir olduğu bu sistem çoğu problemde büyük kolaylıklar sağlıyor.

Yorumları Göster veya Yeni Yorum Yaz