|
Teori: DOM
Teori: DOM
document.writeln() ne demektir? Siz ne işe yaradığını ve
ne zaman kullanmanız gerektiğini biliyorsunuz, ama neden document.writeln()
diye adlandırılmıştır? Halbuki print_into_source() gibi daha çok
anlam ifade eden bir deyim de olabilirdi.
Bu ve bir çok sorunun cevabı DOM'da (Document Object
Model) gizlidir. DOM Javascriptin sayfaları tanımlama ve tarif etme
şeklidir. Daha sonra bu konuyu açacağız.
DOM hakkında konuşmaya başlamadan önce, object-orientated
(nesne-yönlendirilmeli) programlamayı tartışmalıyız. Biliyorum, bu
biraz teknik elemanların anlayacağı şeyler gibi duruyor ama öyle
değil. Object-orientated programlamanın en azından Javascript
tarafını çözmek için fazla teknik olmaya gerek yok. Object-orientated
programlamanın ardındaki esas fikir, bilginin nesnel terimler
halinde saklanmasıdır. Örneğin, window bir object'dir (nesne).
Daha da açacak olursak: Object'ler objectlerin nasıl
davranacaklarını tarif eden özelliklere sahiptirler. Bu özellikler,
objectlerden bir "." (nokta) ile ayrılmıştır. Ne demek istediğimi
anladınız değil mi? Bir örnek:
window.status = "Hey, orada neler oluyor?!";
Bu browser penceresinin status-bar'ına (pencerenin
altındaki gri satır) Hey, orada neler oluyor?! diye yazacaktır.
Gördüğünüz gibi "window" burada object oluyor, "status" ise
özelliği. Metnin string'i ( Hey, orada neler oluyor?! ) ise özelliği
tarif ediyor.
Özelliklere ilave olarak nesnelerin bir de metodları
vardır. Bu metodlar da neyin nesi, bunları öğrenmemiz şart mı?
diyebilirsiniz. Metodlara örnek,
alert(), writeIn() veya open(). Özellikler (properties)
gibi metodlar da objectlerden bir "." (nokta) ile ayrılırlar.
document.writeln('I know JavaScript!')
Property (özellik) ve metodlar arasındaki esas fark,
metodlar her zaman 2 tane parantez tarafından takip edilirler.
Parantezlerin içine ise parametreleri koyarsınız. Örneğin alert()
parantezlerinin içine alert-boxda çıkmasını istediğiniz yazıları
koyarsınız. writeln() metodu parantezi içine yazılan string ise
HTMLye yazdırılır.
Devam etmeden önce son bir şey: window herzaman
varsayılan object'dir. Örneğin window.status yazmayla sadece status
yazmak arasında bir fark yoktur. Gerçek programcılar genelde yalnız
status yazarlar, ama biz ilerde kaybolmamak için uzun haliyle yazsak
daha iyi olur sanırım.
Özetlersek: Şimdiye kadar object'lerin görünümlerini
tarif eden properties (özellikleri) olduğunu öğrendik. Ayrıca
biliyoruz ki metodlar bir şeyin nasıl yapılacağını tarif ederler.
Sonra window'un varsayılan object olduğunu öğrendik, istersek
window'u kodumuza dahil etmeyebiliriz.
Kısa özet için bu kadar yeter. Şimdi başka bir ilginç
yanına bakalım:
Objectlerin özellikleri de object olabilir!.. Bir önceki
derste resimlerin dönüşümünü hatırlıyormusunuz? "image1"in kaynağını
window.document.image1.src = 'whatever.gif' şeklinde göstermiştik.
Dikkat ederseniz, document gerçekte bir property (özellik) olamaz,
çünkü özellikler kendilerini tarif eden bir şey tarafından takip
edilmelidir. Aynısı image1 içinde geçerlidir. Sanırım artık tahmin
etmişsinizdir yukardaki örnekte src'un property (özellik) olduğunu.
Gördüğünüz gibi document ve image1 her ikiside nesne içinde
nesnedirler. Anladınız sanırım (kısa içeriğin uzun tarifi).

Umarım yukardaki resmin nedemek istediğini anladınız,
yeterince İngilizce gördüğümüz için etiketleri Türkçeleştirmedim.
Çok profesyonel bir reesim değil ama, resimde DOM'u bir ağaç
şeklinde görüyorsunuz, window nesnesi ise ağacın kökünde oluyor.
- İyi ama sen bize window nesnesine gerek yok demiştin
- Evet ama bu window nesnesinin DOM'da olmadığı anlamına gelmez.
- Peki kullanmak zorunda değilsem neden DOM'un içerisinde?
- Çok basit, şöyle düşün: Aşağıdaki resim güzel durur mu? Onun için
window'u keşfettiler.:-)

"window nesnesi köktür". Oradan, ilk özellikler,
metodlar ve nesneler grubuna tırmanırız. Daha yukarı tırmanmak bizi
bir başka özellikler, metodlar ve nesneler grubuna götürür. Bunun
hepsi önceden tasarlanmıştır. Aniden writeln() komutunu
yazamazsınız, önceden nesnesini ve yerini belirtmelisiniz.
 
|