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

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.

let deyimler = {
    if:'if Deyimi',
    for:'for Deyimi',
    let:'let Deyimi',
    var:'var Deyimi',
};

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