Nesnelerde Üç Nokta (Spread) Operatörü

Üç Nokta (Three Dots) veya Yayılma (Spread) Operatörü denir.

Object.assign()'dan daha kullanışlı bir sözdizimidir.

... operatörü ile nesnenin tüm özelliklerinden yayılacak şekilde bağımsız bir kopya (klon) oluşturulur. Örnek.

let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
};
let metrik = {
    kidem:15,
    maas:12000,
};
// isci nesnesine metrik nesnesinin özelliklerini ekledik.
isci = {...metrik};
alert(isci.kidem); //'15' çıktısı verir.

//veya yeni bir nesnede birleştirebiliriz.
let yeniIsci = {...isci,...metrik};
// yayılım yapılan nesnenin değerinin değişmesinden etkilenmez.
isci.kidem = 25;
alert(yeniIsci.kidem); //'15' çıktısı verir.

Nesnelerde aynı özellikler var ise son sıradaki değer ilkinin üzerine yazılır. Örnek.

let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
};
let metrik = {
    tcNo: 0,
    kidem:15,
    maas:12000,
};

isci = {...metrik}; // metrik'teki tcNo öncekinin üzerine yazılır.
alert(isci.tcNo); //0 çıktısı verir.

Üzerine yazmayı siz sonradan elle de yapabilirsiniz. Örnek.

let isci = {
    tcNo:12345678900,
    isim:'Güneş Gün',
    kidem:15,
    maas:12000,
};

yeniIsci = {
    ...isci,
    tcNo:0,
    maas:9000,
};
alert(yeniIsci.tcNo); //0 çıktısı verir.
alert(yeniIsci.maas); //9000 çıktısı verir.
//diğer özellikleri aynı kalır

Eğer değerlerde nesne kullanılmışsa Object.assign() gibi onların bir klonunu oluşturamaz.

... operatörü nesnelerde (object, array vb.) hepsinde kullanılabilir.

Yukarıda ... operatörünün yayılma özelliğini kullandık.

Fakat tek işlevi yayılma (spread) değildir. Dilimlemeler ve birleştirmeler de yapılabilir. n sayıda elemanı (özelliği) olan bir nesneyi dilimleyebilir ve kalanı (rest) ile birlikte işleme alabilir.

Bu kullanımına 'Rest (Geri Kalan) Parameter' denir. Bunu ileri fonksiyonlarda göreceğiz. Basit bir örnek.

let matematik = {
    topla (...sayilar) { //n (belirsiz) sayıda argüman aldık
        let toplam = 0;
        for (let sayi of sayilar) { // for .. of döngüsünü array'lerde gördük.
            toplam += sayi;
        }
        return toplam;
    }
};
alert( matematik.topla(1,2,3,4,5,6,7,8,9,10) );

Last updated