Проверяет понимание глубокого копирования объектов в JavaScript с помощью встроенного метода structuredClone().
structuredClone() — это глобальная функция в JavaScript, предназначенная для создания глубоких копий объектов. Она появилась в спецификации HTML и доступна в современных браузерах и Node.js (начиная с версии 17). Этот метод решает проблему копирования сложных структур данных, которые не могут быть корректно скопированы с помощью оператора присваивания (создающего ссылку) или JSON-сериализации.
Функция использует алгоритм структурированного клонирования, который рекурсивно обходит все свойства объекта и создает их независимые копии. В отличие от JSON.parse(JSON.stringify()), structuredClone() поддерживает:
const original = {
name: 'Alice',
date: new Date(),
tags: new Set(['js', 'clone']),
nested: { a: 1 }
};
const cloned = structuredClone(original);
console.log(cloned === original); // false
console.log(cloned.date === original.date); // false
console.log(cloned.tags === original.tags); // false
console.log(cloned.nested === original.nested); // false
// Поддержка циклических ссылок
const circular = { foo: 'bar' };
circular.self = circular;
const clonedCircular = structuredClone(circular);
console.log(clonedCircular.self === clonedCircular); // truestructuredClone() идеален, когда нужно безопасно скопировать сложный объект с сохранением всех типов данных, включая бинарные и циклические структуры. Он предпочтительнее JSON-сериализации для глубокого копирования, так как не теряет информацию о специальных типах. Однако он не поддерживает функции, символы и прототипы классов — для таких случаев нужны другие подходы.
Вывод: structuredClone() — это современный, безопасный и эффективный способ глубокого копирования объектов в JavaScript, который следует использовать вместо устаревших методов, когда требуется сохранить все типы данных и избежать побочных эффектов от ссылок.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию