JavaScript’te hemen her şey nesne olarak çalışır. Diziler, fonksiyonlar, tarih objeleri ve hatta JSON verileri bile aslında nesnelerdir. Nesneler, birden fazla veriyi bir arada saklaman ve bu verilere anlamlı bir yapı kazandırman için kullanılır. JavaScript nesne konusunu öğrenmek, yazılım projelerinde karmaşık verileri daha okunabilir ve yönetilebilir hale getirmeni sağlar. Özellikle JSON verileriyle çalışırken veya API’den veri çekerken bir adım öne taşır.
Javascript Nesne Nedir?
Javascript Nesne (object), içerisinde anahtar-değer (key-value) çiftleri barındıran veri yapısıdır. Verileri birbiriyle ilişkili şekilde tutmak için iyi bir araçtır.
1 2 3 4 5 | let personel = { ad: "Oktay", yas: 25, departman: "IT" }; |
Yukarıdaki örnekte personel bir nesnedir. İçinde ad
, yas
ve departman adında anahtarlar (key) ve bunlara karşılık gelen değerler (value) vardır.
Javascript Nesne Oluşturma Yöntemleri
Object Literal
Object Literal (Nesne Değişmezi), Basit ve hızlı bir şekilde nesne oluşturmak için kullanılan bir yöntemdir. Süslü parantez {}
içinde key-value (anahtar-değer) çiftleri tanımlanarak oluşturulur.
1 2 3 4 5 6 | let araba = { marka: "Toyota", model: "Corolla", yil: 2022, renk bilgisi: "Kırmızı" }; |
Object Constructor
Object Constructor (Nesne Yapıcı), Aynı türden birden fazla nesne oluşturmak için kullanılan bir fonksiyondur. new
anahtar kelimesiyle çağrılarak yeni bir nesne örneği (instance) oluşturulur.
1 2 3 | let kitap = new Object(); kitap.ad = "1984"; kitap.yazar = "George Orwell"; |
Javascript Nesne Özelliklere Erişim
Nokta (Dot Notation)
JS kodu yazan yazılımcılar arasında en yaygın kullanılan yöntemdir. Doğrudan özellik adı yazılır ve nesneye erişilir. Özellik adı basit ve sabit olduğunda kullanılması daha uygundur.
1 | console.log(araba.marka); // "Toyota" |
Köşeli Parantez (Bracket Notation)
Özelliğin adı string türde olarak yazılır. Ayrıca özellik adında boşluk veya özel karakter varsa kullanılması gerekir.
1 2 | console.log(araba["model"]); // Corolla console.log(araba["renk bilgisi"]); // Kırmızı |
Değişken ile Köşeli Parantez Notasyonu
Özellik adı bir değişkende saklandığında kullanılır. Dinamik olarak özellik seçmeye olanak tanır.
1 2 | let ozellik = "yil"; console.log(araba[ozellik]); // 2022 |
Javascript Nesne Özellikleri Ekleme, Güncelleme ve Silme
Özellik Ekleme
Yeni bir özellik eklemek için basitçe var olmayan bir özelliğe değer atayabilirsiniz.
Nokta ile Ekleme
Köşeli Parantez ile Ekleme
Dinamik Özellik Ekleme
Özellik Güncelleme
Var olan bir özelliğin değerini değiştirmek için aynı özelliğe yeni bir değer atanır.
Nokta ile Güncelleme
Köşeli Parantez ile Güncelleme
Dinamik Özellik Güncelleme
Özellik Silme
Bir özelliği tamamen silmek için
delete
operatörü kullanılır.Nokta ile Silme
Köşeli Parantez ile Silme
Dinamik Özellik Silme
JavaScript Nesnelerde Döngü Kullanımı
JavaScript’te nesnelerin özellikleri üzerinde döngü oluşturmak için çeşitli yöntemler bulunur.
for...in
Döngüsü
Nesnenin numaralandırılabilir (enumerable) özelliklerinde döner. Basit döngüler içerisinde kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 | const araba = { marka: "Toyota", model: "Corolla", yil: 2022 }; for (let key in araba) { console.log(key + ": " + araba[key]); } // Çıktı: // marka: Toyota // model: Corolla // yil: 2022 |
Object.keys()
+forEach()
Nesnenin kendi özelliklerinin anahtarlarını dizi olarak alır.
1 2 3 4 5 6 7 8 9 10 11 | const araba = { marka: "Toyota", model: "Corolla" }; Object.keys(araba).forEach(key => { console.log(key, araba[key]); }); // Çıktı: // marka Toyota // model Corolla |
Object.values()
Nesnenin değerlerini döngüye alır. Sadece değerlerle çalışmak için kullanılır.
1 2 3 4 5 6 | Object.values(araba).forEach(deger => { console.log(deger); }); // Çıktı: // Toyota // Corolla |
İç İçe Nesneler (Nested Objects)
JavaScript’te iç içe (nested) nesnelerle çalışırken döngü yöntemlerini özelleştirmek gerekir.
1 2 3 4 5 6 7 8 9 10 11 12 13 | const personel= { ad: "Oktay", yas: 25, adres: { sehir: "Sakarya", postaKodu: "54000", detay: { sokak: "Mavi Durak Caddesi", no: 145 } }, hobiler: ["okuma", "yüzme", "kodlama"] }; |