Object 'ler süslü parantezler ({}) ile oluşturulurlar. Her obje "anahtar:değer" ikililerinden oluşur. Object türünde anahtarlar sadece string tipinde olabilirler.
Object'lerin anahtarları özellik (property) veya nitelik (attribute) olarak da ifade edilmektedirler.
Bir nesne oluşturalım.
let ogrenci = { //nesne adı 'ogrenci' no:2301,// anahtar adı 'no' değeri 2301 isim:'Asya',// anahtar adı 'isim' değeri 'Asya' soyisim:'KARA',// anahtar adı 'soyIsim' değeri 'KARA' sinif:7,// anahtar adı 'sinif' değeri 7};alert(ogrenci); //çıktı: [object Object]alert( typeof(ogrenci) ); // object
Object türünde anahtarlar isimlendirilirken değişken isimlendirme kurallarında olduğu gibi dikkat edilir. Farklı olarak dile ait deyimler (let, const, if, for ... vb.) de anahtar olarak kullanılabilir. Hata vermez. Örnek.
ogrenci nesnesi bir adres hiyerarşisini referans ettiği için alert(ogrenci); ile doğrudan değerlere erişilemez. Değerlere anahtarları üzerinden erişilebilir. Örnek.
Köşeli parantez kullanımı güçlüdür. Değişkenler veya değerler ile erişmeye olanak sağlar. Örnek.
let ozellik =prompt('Göstermek istediğiniz özelliği giriniz',0);alert( ogrenci[ozellik] );//veyaalert( ogrenci['sinif'] );// şeklinde de kullanılabilir
Yukarıdaki örneğe bakarak "Öğrenci nesnesinin 4 özelliği vardır." ifadesini kullanabiliriz. Nesnelerin anahtarları genellikle özellik olarak ifade edilir.
Bir özelliği sabit bir string yerine değişken ile belirlemek istiyorsanız yine köşeli parantezler kullanmalısınız. Anahtar isminde köşeli parantez kullanınca yazdığınız ifade değerlendirilir. Buna 'Hesaplanmış Özellik' denir. Örnek.
let ozellik =prompt('Eklemek istediğiniz özelliği giriniz',0);let deger =prompt('Eklemek istediğiniz değeri giriniz',0);let ogrenci = { no:2023, isim:'Asya', [ozellik]:deger};alert( `${ozellik} : ${ogrenci[ozellik]}` );
Hesaplanmış özelliklerde string operatörler de kullanabilirsiniz. Örnek.
let ozellik =prompt('Eklemek istediğiniz özelliği giriniz',0);let deger =prompt('Eklemek istediğiniz değeri giriniz',0);let ogrenci = { no:2023, isim:'Asya', ['yeniOzellik_'+ ozellik]:deger};alert( `${'yeniOzellik_'+ ozellik} : ${ogrenci['yeniOzellik_'+ ozellik]}` );
Bir nesneye sonradan yeni özellikler eklenebilir veya var olan özellikler delete deyimi ile silinebilir. Örnek.
let ogrenci = { no:2301, isim:'Asya', sinif:7,};ogrenci.sube ='A'; // sube özelliği ekledik ve değerini 'A' atadık.alert(ogrenci.sube);deleteogrenci.sinif; // sinif özellğini sildik.alert(ogrenci.sinif); // undefined çıktısı verir.
Özellik eklemeyi köşeli parantezle de yapılabilirsiniz. Örnek.
let ogrenci = { no:2301, isim:'Asya', sinif:7,};ogrenci['sube'] ='A'; // sube özellği ekledik ve değerini 'A' atadık.alert(ogrenci.sube);
Nesneleri boş olarak oluşturup sonrasında anahtar (özellik) ekleyebilirsiniz. Örnek.
let nesne = {};nesne.key1 ='Özellik-1';nesne.key2 ='Özellik-2';alert(nesne.key1);
Nesnelerdeki anahtarların değerleri başka bir nesne olabilir. Örnek.