PassFront
  1. PassFront
  2. База знаний
  3. Объекты и прототипы

Что такое глубокое копирование объекта?

Объекты и прототипы

Глубокое копирование (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()).

Другие вопросы раздела