Immutability
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
-
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.
-
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 }; -
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