structuredClone(): глубокая копия поддерживаемых данных
Функция structuredClone копирует поддерживаемые структуры данных, включая вложенные объекты и циклические ссылки. Она полезна там, где поверхностного spread недостаточно.
Назначение
Функция structuredClone копирует поддерживаемые структуры данных, включая вложенные объекты и циклические ссылки. Она полезна там, где поверхностного spread недостаточно.
Как это работает
Алгоритм умеет сохранять ряд встроенных типов, например Date и Map. Копия независима от исходного дерева данных, но функция не является универсальным клонированием любого объекта с его поведением и прототипом.
Пример
const original={settings:{theme:"light"},date:new Date("2026-01-01T00:00:00Z")};
original.self=original;
const copied=structuredClone(original);
copied.settings.theme="dark";
console.assert(original.settings.theme==="light");
console.assert(copied.date instanceof Date);
console.assert(copied.self===copied);
console.assert(copied!==original);
Что должно получиться
Изменение вложенной настройки копии не затрагивает оригинал. Дата остаётся объектом Date, а циклическая ссылка указывает на копию, а не на исходный объект.
Граница применения и частая ошибка
Функции и DOM-узлы нельзя переносить этим способом: операция может выбросить DataCloneError. Не используйте глубокое копирование как очистку недоверенного ввода. Опция transfer имеет другую семантику и может лишить исходный буфер доступа к данным.
Самостоятельная проверка
Проверьте копирование Map с вложенным объектом и отдельно попытку скопировать функцию, обработав ошибку. Для целевой среды подтвердите наличие structuredClone; сериализация через JSON не является равноценной заменой.
Пример JavaScript проверяйте в собственном учебном файле или консоли своего проекта. Встроенная песочница справочника JavaScript не выполняет. Успешное выполнение в одной среде не гарантирует поддержку метода во всех браузерах.