sinan ilyas
Makale Kategorileri
Son Makaleler
Yürüyen Merdivenlerde El Bantları Neden Basamaklardan Daha Hızlı İlerler?
Uzak Masaüstü Bağlantı Hatası: Data Encryption Error
ADSL Modem Telefon Hattına Splitter Kullanmadan Bağlanabilir Mi?
Singleton: Bir Sınıftan Sadece Bir Örnek Oluşturma
Varolan Veri Tiplerine Metot Ekleme
Visual Studio'da Linq-to-Sql Sorgularını Görmek
Resim Dosyasındaki Yazının Fontunu Bulan Site
MSSQL Server'da Bozulmuş Model Veritabanı Nasıl Düzeltilir?
Sinan İLYAS 06 Ekim 2009 Salı 13:53
Yahoo! Javascript mimarı Douglas Crockford'un Javascript eğitim videolarını izleyerek aldığım notları sizlerle paylaşmaya devam ediyorum.
Javascript'te nesneler birer isim/değer koleksiyonudur. Veri ve metotlar içerebilir, başka nesnelerden miras alabilirler. İsim/değer koleksiyonundaki isim herhangi bir string olabilir. Değer ise herhangi bir tip, hatta başka bir nesne olabilir. İsim tırnak içinde yazılabilir, ama bu isteğe bağlıdır.
var nesne = {
isim: "Sinan",
'varisYeri': 'Trabzon',
harf: 'A',
seviye: 3
}
| nesne | |
|---|---|
| "isim" | "Sinan" |
| "varisYeri" | "Trabzon" |
| "harf" | "A" |
| "seviye" | 3 |
var a = nesne.isim; var b = nesne.varisYeri; var c = nesne["harf"]; // nesne.harf yazmak yerine bu şekilde de yazılabilir
Nesne oluşturmak için aşağıdaki gibi bir fonksiyon da yazılabilir:
function nesneOlustur(isim, varisYeri, sinif, seviye) {
var n = {}; // Boş nesne
n.isim = isim;
n["varisYeri"] = varisYeri;
n.sinif = sinif;
n.seviye = seviye;
return n;
};
var nesne = nesneOlustur("Sinan", "Ankara", "A", 3);
Nesnelerin içindeki değerler başka nesneler de olabilir:
var nesne = {
isim: "Sinan",
format: {
genislik: 1920,
yukseklik: 1080
}
};
Fonksiyonlar çağrılırken parametre olarak nesne gönderilebilir:
yazdir( {isim: "Sinan", yer: "Ankara"} );
Yukarıda görüldüğü gibi, yeni bir nesne oluşturmak için { } parantezleri yeterlidir. Herhangi bir kurucu fonksiyon çağırmaya gerek yoktur.
Fonksiyonlara çok fazla parametre göndermek gerektiğinde, bunun yerine bir tek nesne göndermek çok daha kullanışlıdır.
function superDiv(genislik, yukseklik, sol, ust, zIndeks, pozisyon, renk, gorunurluk, html, cssSinifi) function superDiv(divOzellikleri)
Basit bir atama işlemiyle, nesnelere sonradan yeni üyeler ilave edilebilir.
nesne.gorunum.renk = 'red'; nesne["isim"] = 'sinan';
Nesneler oluşturulurken başka bir nesneye gizli bir bağ kurulabilir.
var yeniNesne = object(eskiNesne);
| yeniNesne | |
|---|---|
| eskiNesne | |
|---|---|
| ad | 'sinan' |
| soyad | 'ilyas' |
| seviye | 3 |
var a = yeniNesne.seviye; // 3 değeri atanır
Bu bağ sadece tek yönlü çalışır. Yeni oluşturulan nesnenin üyelerinin değerleri değiştirildiğinde, eski nesnenin üyelerinin değerleri değişmez.
yeniNesne.ad = 'ahmet'; yeniNesne.seviye = 1; yeniNesne.sehir = 'trabzon';
| yeniNesne | |
|---|---|
| ad | 'ahmet' |
| seviye | 4 |
| sehir | 'trabzon' |
| eskiNesne | |
|---|---|
| ad | 'sinan' |
| soyad | 'ilyas' |
| seviye | 3 |
Yeni bir nesne oluştururken, dinamik bir bağ oluşturmak yerine, eski nesneyi kopyalayarak bağımsız yeni bir nesne oluşturmak mümkün değildir.
Yeni nesne oluşturmanın 3 yolu vardır:
var a = new Object();
var b = { };
var c = object(Object.prototype);
Bunlardan { } parantezlerinin kullanılması önerilir.
Fonksiyonlara parametre olarak gönderilen nesneler ve fonksiyonlardan return ile döndürülen nesneler, değer olarak değil referans (hafızada saklandığı adres) olarak gönderilir.
=== operatörü değerleri değil referansları karşılaştırır.
delete operatörü ile nesnelerin üyeleri silinebilir.
delete nesne[ad];
delete operatörünün aslında yaptığı şey, ilgili üyenin değerini undefined olarak değiştirmektir.
Diğer dillerden farklı olarak, Javascript'te Array'ler Object'ten miras alır.
Dizilere [ ] parantezleri kullanılarak ilk değer verilebilir.
var dizi = ['sinan','ahmet','mehmet'];
Dizilerin length isimli bir üyesi vardır ve her zaman en büyük indeksin bir fazlasını verir.
Yeni dizi oluştururken new Array() ve [ ] kullanılabilir. Bunlardan [ ] parantezlerinin kullanılması tavsiye edilir.
delete operatörü ile dizilerin elemanları silinebilir.
delete dizi[5];
Ancak bu şekilde silindiğinde numaralandırmada bir boşluk kalır. Çünkü aslında yapılan şey dizinin belirtilen elemanının değerini undefined olarak değiştirmektir. Bunun yerine splice kullanılırsa, eleman silindikten sonra, numaralandırma yeniden düzenlenir.
dizi.splice(5,1);
Dizilerden düzgün bir şekilde miras alınamaz. Bu yüzden dizilerin prototip olarak kullanılması tavsiye edilmez. Çünkü bu şekilde oluşturulan nesneler dizi özelliği taşımaz. Dizinin değerlerini ve metotlarını miras alır, ama örneğin length üyesini almaz.
Dizilere sadece değerler değil, metotlar da eklenebilir. Çünkü diziler de aslında birer nesnedir.
Anahtar Kelimeler: javascript, javascript anlatım, javascript dersleri, javascript eğitim, javascript notları, temel javascript, douglas crockford, sunum, sunumu, türkçe, video, power point, ppt
Kategori: Programlama > Javascript
Bu makaleye henüz hiç yorum yapılmamış.
© 1997- Sinan İLYAS
Site içeriği kaynak gösterilmeden kopyalanamaz.
Site tasarım şablonu Free CSS Templates sitesinden alınarak düzenlenmiştir.
Copyright © 2007 Ornate. All Rights Reserved. Designed by Free CSS Templates.