Object - Nesne
Object
veri tipinin bölümleri:
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
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.
alert(ogrenci.no);
alert(ogrenci.isim);
alert(ogrenci.soyisim);
alert(ogrenci.sinif);
Bu erişim köşeli parantez []
kullanılarak da yapılabilir. Örnek.
alert( ogrenci['no'] );
alert( ogrenci['isim'] );
alert( ogrenci['soyisim'] );
alert( ogrenci['sinif'] );
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] );
//veya
alert( 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);
delete ogrenci.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.
let nesneler = {
nesne1:{
d1:'Nesne-1 Özellik-1',
d2:'Nesne-1 Özellik-2'
},
nesne2:{
d1:'Nesne-2 Özellik-1',
d2:'Nesne-2 Özellik-2'
},
};
alert(nesneler.nesne1); // [object Object] çıktısı alınır.
alert(nesneler.nesne1.d1); // 'Nesne-1 Özellik-1' çıktısı alınır.
Last updated