Вопрос проверяет понимание способов создания независимой копии объекта в JavaScript.
Глубокое копирование создаёт новую копию объекта со всеми вложенными структурами. Один из простых способов — сериализация через JSON, но он имеет ограничения. Современный и безопасный способ — structuredClone. Также можно реализовать рекурсивное копирование вручную. Выбор метода зависит от типов данных.
Поверхностное копирование копирует только ссылки, поэтому изменения затрагивают исходный объект.
Глубокое копирование — это создание нового объекта со всеми вложенными значениями без общих ссылок.
JSON-сериализация
const copy = JSON.parse(JSON.stringify(obj));
Подходит только для простых данных.
structuredClone
const copy = structuredClone(obj);
Поддерживает большинство встроенных типов.
Рекурсивное копирование
Используется для полного контроля логики
Требует обработки циклических ссылок
JSON не копирует функции и undefined
structuredClone недоступен в очень старых браузерах
Для современных приложений предпочтительно использовать structuredClone, а JSON — только для простых структур данных.