CodeBlanks Logo Icon CodeBlanks

Spread ile kopyalama

JavaScript kursu · İleri seviye · Ders 33/100

Spread ile dizilerin ve nesnelerin sığ kopyasını almayı öğrenirsin.

Shallow copy

Spread ile bir dizinin veya nesnenin sığ kopyasını alabilirsin. const copy = [...original] yeni bir dizi; const copy = { ...original } yeni bir nesne üretir. Üst düzey değerler bağımsızdır; kopyayı değiştirsen orijinal etkilenmez.

Bu, değişmez (immutable) güncellemeler için idealdir: mevcut veriyi bozmadan türetilmiş bir kopya oluşturursun. React ve benzeri kütüphaneler bu örüntüye dayanır.

İç içe yapı tuzağı

Shallow copy yalnızca birinci seviyeyi kopyalar. İç içe nesneler veya diziler referans olarak paylaşılır. const copy = { ...original } yaptıktan sonra copy.items.push(3) yazarsan original.items da değişir; çünkü her ikisi de aynı diziye işaret eder.

Derin kopya gerekirse structuredClone(original) gibi bir yöntem kullanırsın. Spread ise hızlı ve okunaklı bir sığ kopya verir; çoğu durumda bu yeterlidir.

Uygulama Dizi kopyasını bağımsız değiştir

numbers adında bir dizi oluştur (örneğin [1, 2, 3]). Spread ile numbersCopy adında bağımsız bir kopya oluştur. numbersCopy.push(4) ile kopyaya yeni bir öğe ekle. Sonra hem numbers hem numbersCopy dizilerini console.log ile ayrı ayrı yazdır; böylece orijinalin değişmediğini gör.

Örnek çözümü göster
const numbers = [1, 2, 3];
const numbersCopy = [...numbers];
numbersCopy.push(4);
console.log(numbers);
console.log(numbersCopy);

Kendini test et

  1. Shallow copy neyi kopyalamaz?

    const original = { items: [1, 2] };
    const copy = { ...original };
    • İç içe nesneler referans olarak kalır
    • Tüm iç içe yapılar derin kopyalanır
    • Yalnızca ilk özellik kopyalanır
    • Orijinal nesne silinir
    Cevabı göster

    İç içe nesneler referans olarak kalır — Doğru. Shallow copy yalnızca üst düzeyi kopyalar; iç içe yapı paylaşılır.

  2. Nesnenin sığ kopyası

    const original = { theme: "light" };
    const copy = ____;
    console.log(copy);
    Cevabı göster
    const original = { theme: "light" };
    const copy = {...original};
    console.log(copy);
  3. Kopyalama kavramlarını eşleştir

    shallow copy
    Üst düzey kopya, iç içe paylaşılır
    [...arr]
    Dizi kopyası
    {...obj}
    Nesne kopyası

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