Object Oriented Javascript : Object Literals

Javascript diğer adıyla The Lingua Franca of the Web,yani Web’in ortak dili. Günümüzde yaygınlaşan Ajax ve Web teknolojileri bu dilin yaygınlaşmasında daha da önemli rol oynuyor. Aslına bakılacak olursa dünyada en yaygın programlama dillerinden biri.Çalışması için browser hariç hiçbir gereksinime ihtiyaç duymayan basit, güçlü, hem object oriented programming hemde functional programming  özelliklerini barındıran son zamanlardaki favori dillerimden biri.

Eğer sizde Web projesi geliştiriyorsanız mutlaka Javascript’e biryerinden bulaşmışsınızdır. Genellikle bu bulaşma benim gibi işimi görecek şeyi yapayımda gerisi önemli değil tarzında olduğunu düşünüyorum.Düz mantık global değişkenler ve bunlar üzerinden işlem yapan fonksiyonlar tanımlayarak ufak tefek işlemizi rahatlıkla görebiliriz. Tabi uygulama büyüdükçe yazdığınız kodun Javascript gibi dinamik ve tip koruması olmayan bir dilde yönetilmesi daha da zorlaşacaktır. Bu yüzden script gözüyle bakmantan vazgeçip Javascript’e ciddi bir dil gibi davranıp genel yazılım mühendisliği prensiplerini uygulamak,test yazmak kodun yönetimini kolaylaştıracak diğer prensipleri uygulamak gereklidir.Bu yüzden kodun yönetimini kolaylaştıracak nesneye yönelik programlama teknikleri Javascript içinde oldukça faydalıdır.

Javascript sanılanın aksine Object Oriented programlamayı destekleyen bir programlama dilidir. Klasik anlamda diğer nesneye yönelik programlama dillerinden farkı ise nesneye yönelik programlamayı sınıf tabanlı (class based) değilde , biraz daha farklı olarak object ve prototype tabanlı olarak desteklemesidir. Javascript’in nesneye yönelik programlama tekniklerini birkaç yazıda anlatmayı planlıyorum bu yüzden bu yazıda en basit olarak nasıl nesne tanımlarız onu bakacağız.

Javascript’de basit olarak bir nesneyi aşağıdaki gibi oluşturabiliriz.

var movie = new Object();
movie.name = "Leon";
movie.year = 1995;
movie.rating = 8.5;
movie.displayInfo = function() {
    alert("Movie : " + this.name + " , "+ this.year);
}

movie.displayInfo();

Yukarıda gördüğünüz gibi basit bir şekilde film nesnesi oluşturup gerekli özelliklerine gerekli değerleri atadık.Gördüğünüz gibi herhangi bir “class” tanımı yok. Javascript dinamik bir dil olduğu için herhangi bir zamanda nesneye özellik atayıp çıkarabiliriz.

Yukarıdaki ile aynı işi yapan nesneyi Object Literal notasyonu ile aşağıdaki gibi de tanımlayabiliriz.

var movie = {
    name : "Leon",
    year : 1995,
    rating : 8.5,
    displayInfo : function() {
        alert("Movie : " + this.name + " , "+ this.year);
    }
}

Yukarıda gördüğünüz gibi aynı nesneyi Object Literal notasyonu ile tanımladık.Bunun JSON formatından tanıdık geldiğini düşünüyorum. Daha kısa olduğunu farketmişsinizdir. Javascript gibi her bir byte'ın önemli olduğu bir dilde kısa olması bizler için daha faydalı olacaktır. Yukarıdaki nesne tanımında dikkat edilecek bir nokta da özellik tanımlamalarıdır.Nesnenin özelliklerini aşağıdaki gibi de atayabilirdik.

var movie = {
    "name" : "Leon",
    "year" : 1995,
    "rating" : 8.5,
    "displayInfo" : function() {
        alert("Movie : " + movie.name + " , "+ movie.year);
    }
}

Yukarıdaki gibi Javascript dilinde özellikleri string içerisinde tanımlayıp daha sonra normal özellik gibi ulaşabilirsiniz.Bunun faydası aşağıdaki gibi nesnelere programatik olarak özellik atayıp ya da ulaşabilirsiniz.Yalnızca Object Literal notasyonu programatik özellik tanımlamayı desteklemez bunu aşağıdaki gibi yapabiliriz.

var number =5;
var movie = {
    "name" : "Leon",
    "year" : 1995,
    "rating" : 8.5,
    "displayInfo" : function() {
        alert("Movie : " + movie.name + " , "+ movie.year);
    }
}
movie["writer"+number]="George.." ;

alert(movie["writer"+number]);

Basit olarak nasıl bir nesneye oluşturabileceğimizi gördük. Javascript'de bir işi yapmanın birden fazla yolu olduğu için diğer yöntemleride ileride değinmeyi planlıyorum. Bunları aklınızda tutun ilerlerikçe işler biraz daha karmaşıklaşacak :)

zp8497586rq

2 thoughts on “Object Oriented Javascript : Object Literals

  1. ismail eski

    Cihat Bey, takip ettiğimiz dizilerin yeni bölümlerini heyecanla bekler gibi yazılarınızı feed’e görünce bir solukta okuyorumi ilerleyen yazıları merakla bekliyorum.

    Başarılar.

Comments are closed.