15 Aralık 2012 Cumartesi

Prototype ve Browser Nesneleri


Prototype ve Browser Nesneleri

Javascript'in disable olmadığı durumları saymazsak, browserlar her HTML belgesinde javascript komutlarının çalışmasını sağlayan bir zemin
oluşturur.String,Number,Function,Array,Object nesneleri browser sözettiğimiz çekirdekte yer alan nesnelerden birkaçıdır.
Yazdığımız her sayı Number objesinden, her yazı String objesinden türer.Ve tahmin edeceğiniz gibi, bu değerlerin methodları, çekirdekteki
nesnelere bağlıdır.String nesnesinin methodlarından birini deneyelim:

>>> String
String()
>>> String.prototype.replace
replace()

 String nesnesinin prototype objesindeki replace fonksiyonuna erişip kontrol ettik.Şimdi de oluşturacağımız string değerinde replace methodunun
kullanımını inceleyelim:

>>> "Merhaba Dünya".replace
replace()
ECMAScript standartını kullanan dillerden biri de Actionscript'tir.Bu dil de String,Number gibi objeler oluşturur fakat geliştiricinin bu nesneleri
değiştirmesi kısıtlanmıştır. Neyse ki javascript için böyle bir durum söz konusu değil, browser nesnelerini dilediğimiz gibi değiştirebilmekteyiz.Örnek
olarak Number objesine bir method ekleyelim:

>>> Number.prototype.topla = function(sayiDegeri){
return this+SayiDegeri
}
Number nesnesinin iskeletine "topla" adında bir fonksiyon ekledik.Böylece, tüm sayılar için pratik bir toplama methodu yaratmış olduk, deneyelim:

>>> (4).topla(8)
12
>>> 4.0.topla(8)

Aklınıza şu soru gelmiş olmalı: Peki ondalık hanelerin nokta işaretleriyle methodlarınki karışmaz mı? Evet karışır.Bunun için sayılar parantez içine
alınır, veya ondalık hanesinden sonra method yazılır.
Örnekte gördüğünüz gibi, Number sınıfından türeyen sayı değerlerinin altında topla methodu kendiliğinden gelmektedir.
Küçük bir ipucu: prototype Obje tipindedir yani Object sınıfından türemiştir.Şimdi browser'ımızı heyecanlandıracak birkaç deneme yapalım:

>>> Object.prototype.deneme = "foo bar"
>>> "".deneme
"foo bar"

Örnekte, Object sınıfının iskeletine bir ekleme yaptık ve böylece Object sıfından türemiş olan tüm iskeletlere değişikliği uyguladık.Yani, deneme
fonksiyonu tüm iskeletlere eklendi.Bir sonraki satırda oluşturduğumuz string değeri kontrol ettik ve bu durumu doğruladık.
Protype'lar hakkında genel bilgi sahibi oldunuz.Obje türlerini inceledikten sonra prototype'lara tekrar dönüp deney yapmanızda fayda var.

Bir sonraki yazı: Caller 



Hiç yorum yok:

Yorum Gönder