Что такое глубокое копирование объекта?
Объекты и прототипы
Глубокое копирование (deep copy) — это создание полной независимой копии объекта со всеми вложенными уровнями, так что изменение копии не затрагивает оригинал.
Отличие от поверхностного копирования
Поверхностная копия (spread, Object.assign) копирует только верхний уровень, а вложенные объекты остаются общими ссылками:
const original = { user: { name: 'Ann' } };
const shallow = { ...original };
shallow.user.name = 'Bob';
console.log(original.user.name); // 'Bob' — общий вложенный объектСпособы глубокого копирования
structuredClone (современный, рекомендуемый)
const deep = structuredClone(original);Клонирует вложенность, Map, Set, Date, циклические ссылки. Не копирует функции.
JSON
const deep = JSON.parse(JSON.stringify(original));Просто, но теряет функции, undefined, Symbol, Date превращает в строку, падает на циклах.
Библиотеки
lodash.cloneDeep — надёжно для сложных структур.
Когда нужно
- Иммутабельные обновления состояния (Redux, React).
- Защита исходных данных перед мутацией.
Коротко для собеседования
Глубокая копия дублирует все вложенные уровни, поверхностная — только верхний. Современный способ — structuredClone; быстрый, но ограниченный — JSON.parse(JSON.stringify()).