Что такое `structuredClone()` и чем он отличается от `JSON.parse(JSON.stringify())`?
structuredClone(value) — встроенная функция для глубокого копирования объектов (ES2022).
Преимущества перед JSON.parse(JSON.stringify()):
- Копирует
Date,RegExp,Map,Set,ArrayBuffer,Blob,File,ImageData - Сохраняет циклические ссылки (JSON бросит ошибку)
- Копирует
undefined(JSON теряет) - Копирует
NaN,Infinity,-Infinity(JSON преобразует вnull)
Не копирует:
- Функции — бросит
DataCloneError - DOM-элементы
- Свойства, добавленные через
Object.definePropertyсenumerable: false - Цепочку прототипов — результат всегда plain object