CodeBlanks Logo Icon CodeBlanks

Immutability

JavaScript kursu · İleri seviye · Ders 55/100

Veriyi değiştirmek yerine kopyalayarak güncellemeyi öğrenirsin.

Immutability

Immutability (değişmezlik), veriyi değiştirmek yerine kopyalayarak güncellemektir. Orijinal veri korunur, yeni bir kopya üretilir. Bu, verinin nerede değiştiğini izlemeyi kolaylaştırır.

const user = { name: 'Ayşe', age: 25 };
const older = { ...user, age: 26 };

Burada user değişmez; older yeni bir nesnedir. spread operatörü ...user ile tüm özellikleri kopyalar, sonra age: 26 ile yalnızca yaş üzerine yazılır.

Spread ve Object.freeze

İki yaygın araç immutability için kullanılır. spread operatörü { ...obj } bir nesnenin sığ kopyasını üretir; üzerine yazmak istediğin özellikleri sonra eklersin.

const updated = { ...user, age: 26 };

Object.freeze ise bir nesneyi dondurur; bundan sonra yapılan değişiklikler sessizce yok sayılır. Bu, yanlışlıkla mutasyonu önlemek için kullanışlıdır.

Uygulama Immutable updateUser fonksiyonu yaz

updateUser adında bir fonksiyon yaz. user ve updates parametrelerini alır. user'ı mutasyona uğratmadan spread ile kopyalar, updates ile üzerine yazar ve yeni nesneyi döndürür. Sonra console.log(updateUser({ name: 'Ayşe', age: 25 }, { age: 26 })) çağrısı yap.

Örnek çözümü göster
function updateUser(user, updates) {
  return { ...user, ...updates };
}
console.log(updateUser({ name: 'Ayşe', age: 25 }, { age: 26 }));

Kendini test et

  1. Hangisi user nesnesini mutasyona uğratır?

    const user = { name: 'Ayşe', age: 25 };
    • const copy = { ...user, age: 30 };
    • user.age = 30;
    • Object.freeze(user);
    • const copy = Object.assign({}, user);
    Cevabı göster

    user.age = 30; — Doğru! user.age = 30 mevcut nesneyi doğrudan değiştirir.

  2. Yaşı 1 artırarak kopyala

    const user = { name: 'Ayşe', age: 25 };
    const older = { ...user, ____ };
    Cevabı göster
    const user = { name: 'Ayşe', age: 25 };
    const older = { ...user, age: 26 };
  3. Immutability araçlarını eşleştir

    Object.freeze
    değişikliği engeller
    spread {...obj}
    yeni nesne kopyalar
    mutasyon
    var olan değeri değiştirir

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