CodeBlanks Logo Icon CodeBlanks

Spread (nesneler)

JavaScript kursu · İleri seviye · Ders 31/100

... ile bir nesnenin özelliklerini başka nesneye yaymayı öğrenirsin.

Spread (nesneler)

Spread nesnelerde de çalışır. Bir nesnenin önüne ... koyup süslü parantez içine yazarsan özellikleri tek tek açılır. const merged = { ...defaults, fontSize: 14 } yazdığında defaults'un tüm özellikleri yanına fontSize eklenir.

Bu, Object.assign({}, defaults, { fontSize: 14 }) yazmakla aynıdır; ama daha kısa ve nettir. Yeni bir nesne üretir; kaynak nesneler değişmez.

Üzerine yazma

İki nesnede aynı anahtar varsa, sondanaki kazanır. const settings = { ...defaults, ...userPrefs } yazdığında userPrefs'teki anahtarlar defaults'takilerin üzerine yazar.

Bu davranış kasıtlıdır: varsayılanları önce, kullanıcı tercihlerini sonra koyarsın. Böylece kullanıcı boş bıraktığı alanlarda varsayılanı alır, kendi verdiği değer ise kazanır.

Uygulama Yapılandırmayı birleştir

defaultConfig adında bir nesne oluştur; theme ve lang özellikleri tutsun. userConfig adında ikinci bir nesne oluştur; yalnızca lang özelliği olsun. settings adında üçüncü bir nesneyi spread ile birleştirerek oluştur; defaultConfig önce, userConfig sonra gelsin. settings'i console.log ile yazdır.

Örnek çözümü göster
const defaultConfig = { theme: "dark", lang: "tr" };
const userConfig = { lang: "en" };
const settings = { ...defaultConfig, ...userConfig };
console.log(settings);

Kendini test et

  1. `{ ...a, ...b }` ne üretir?

    const a = { x: 1 };
    const b = { y: 2 };
    const c = { ...a, ...b };
    • `a` nesnesini siler
    • Yalnızca `a`'nın özelliklerini içeren nesne
    • `a` ve `b`'nin özelliklerini birleştiren yeni nesne
    • İki elemanlı bir dizi
    Cevabı göster

    `a` ve `b`'nin özelliklerini birleştiren yeni nesne — Doğru. Her iki nesnenin özellikleri yeni bir nesnede toplanır.

  2. Varsayılanları geçersiz kıl

    const defaults = { theme: "light", volume: 50 };
    const userPrefs = { volume: 80 };
    const settings = ____;
    console.log(settings);
    Cevabı göster
    const defaults = { theme: "light", volume: 50 };
    const userPrefs = { volume: 80 };
    const settings = {...defaults, ...userPrefs};
    console.log(settings);
  3. Kavramları eşleştir

    nesne spread
    Özellikleri yeni nesneye açar
    dizi spread
    Elemanları yeni diziye açar
    sondaki kazanır
    Aynı anahtar çakışması

İleri seviye bölümündeki tüm dersler