Structured clone
Алгоритм (и функция structuredClone()) для настоящего глубокого копирования сложных значений JavaScript — включая Map, Set, Date, ArrayBuffer и циклические ссылки. Тот же механизм работает при передаче данных между вкладками, воркерами и в IndexedDB.
Долгое время глубокое копирование делали хаком JSON.parse(JSON.stringify(obj)), но он многое теряет: Map и Set превращаются в пустые объекты, Date — в строку, undefined и функции исчезают, а циклические ссылки приводят к ошибке. Алгоритм structured clone справляется со всем этим корректно. С 2022 года он доступен как глобальная функция structuredClone(value) — простое и правильное копирование без библиотек. Тот же алгоритм работает под капотом при postMessage в веб-воркер или другую вкладку (данные копируются, а не разделяются) и при сохранении объектов в IndexedDB. Ограничения: нельзя клонировать функции, узлы DOM и цепочки прототипов. Маленькое, но приятное дополнение к платформе.