for .. in ile Nesnenin Özellikleri

Bir özelliğin bir nesne içindeki varlığını in deyimi ile sorgulayabiliriz. Örnek.

let ogrenci = {
    no:2301,
    isim:'Asya',
    sinif:7,
};
delete ogrenci.sinif;
alert( 'isim' in ogrenci ); //true
alert( 'notlar' in ogrenci ); //false
alert( 'sinif' in ogrenci ); // 6.satırda sildiğimiz için: false

Bu sorgulama .hasOwnProperty() veya Object.hasOwn() ile de yapılabilir. Örnek.

alert( ogrenci.hasOwnProperty('no') ); //true
alert( Object.hasOwn(ogrenci,'isim') ); //true
alert( Object.hasOwn(ogrenci,'okul') ); //false

Nesnelerin anahtarları döngülenebilirler. Döngülenebilir yapılar for'un farklı kullanımlarıyla döngülenebilirler. Nesneler for ... in kullanımıyla döngülenebilirler. Örnek.

let user = { 
    takmaAd:'user',
    sifre:'1234',
    dil:'TR',
};
for (let ozellik in user) {
    alert(ozellik);
}

Eğer size değerler lazımsa şu şekilde kombinleyebilirsiniz.

let user = { 
    takmaAd:'user',
    sifre:'1234',
    dil:'TR',
};
for (let ozellik in user) {
    alert( user[ozellik] );
}

for ... in kullanımı özelliklerin eklenme sırasına göre çalıştırır fakat anahtarlar string tipinde nümerik değerlerle belirtilmişse işler değişir.

let numerics = { 
    '44':'kırkdört',
    '1':'bir',
    '34':'otuzdört',
};
for (let anahtar in numerics) {
    alert(anahtar);
}

Anahtarlar eklenme sırasına göre değil de sayısal olarak artan sırada gelir. Bu durum anahtarların for ... in kullanımında bellekte nümerik olarak çevriminden kaynaklanır. Önüne geçmek için string'in önüne '+' vb. semboller konularak tip saflaştırılır.

let numerics = { 
    '+44':'kırkdört',
    '+1':'bir',
    '+34':'otuzdört',
};
for (let anahtar in numerics) {
    alert(anahtar);
}

Metotlar da yine for ... in döngüsü anahtar olarak gösterilir. Örnek.

let user = { 
    takmaAd:'user',
    sifre:'1234',
    dil:'TR',
    ozellikGoster() {
        for (let ozellik in this) {
            alert(ozellik);
        }
    }
};
user.ozellikGoster(); // en sonda ozellikGoster anahtarı görünecektir.

Last updated