Shallow copy vs deep copy — co kopiuje spread?
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
Spread kopiuje tylko pierwszy poziom. Zagnieżdżone obiekty pozostają współdzielone.
JavaScript
const original = { profile: { name: 'Anna' } };
const shallow = { ...original };
const deep = structuredClone(original);
shallow.profile.name = 'Ola';
console.log(original.profile.name); // Ola
console.log(deep.profile.name); // AnnaDoprecyzowanie: structuredClone obsługuje wiele typów danych i cykle, ale nie funkcje ani każdy rodzaj obiektu.
Pułapka: JSON stringify/parse gubi część informacji i nie obsługuje cykli. W React często wystarczy skopiować tylko zmienianą ścieżkę, zamiast głęboko klonować cały stan.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.
Powiązane pytania
- B-P09 · Co oznacza zmiana obiektu przez referencję i po co kopiujemy stan? — JavaScript, TypeScript i Node.js
- Spread i zagnieżdżony obiekt — JavaScript