Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: structuredClone, deep copy, JavaScript, clone, structured clone algorithm

Как работает structuredClone()?

Проверяет понимание глубокого копирования объектов в JavaScript с помощью встроенного метода structuredClone().

Короткий ответ

structuredClone() — это встроенный метод JavaScript для глубокого копирования объектов. Он создает полную независимую копию, включая вложенные объекты и массивы. В отличие от JSON.parse(JSON.stringify()), он поддерживает специальные типы данных, такие как Date, Map, Set, ArrayBuffer и даже циклические ссылки. Метод использует алгоритм структурированного клонирования, который работает безопасно и эффективно.

Длинный ответ

Что такое structuredClone()?

structuredClone() — это глобальная функция в JavaScript, предназначенная для создания глубоких копий объектов. Она появилась в спецификации HTML и доступна в современных браузерах и Node.js (начиная с версии 17). Этот метод решает проблему копирования сложных структур данных, которые не могут быть корректно скопированы с помощью оператора присваивания (создающего ссылку) или JSON-сериализации.

Как это работает?

Функция использует алгоритм структурированного клонирования, который рекурсивно обходит все свойства объекта и создает их независимые копии. В отличие от JSON.parse(JSON.stringify()), structuredClone() поддерживает:

  • Date, Map, Set, WeakMap, WeakSet
  • ArrayBuffer, TypedArray, DataView
  • RegExp, Blob, File, ImageData
  • Циклические ссылки (без зацикливания)

Пример использования

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); // true

Когда применять?

structuredClone() идеален, когда нужно безопасно скопировать сложный объект с сохранением всех типов данных, включая бинарные и циклические структуры. Он предпочтительнее JSON-сериализации для глубокого копирования, так как не теряет информацию о специальных типах. Однако он не поддерживает функции, символы и прототипы классов — для таких случаев нужны другие подходы.

Вывод: structuredClone() — это современный, безопасный и эффективный способ глубокого копирования объектов в JavaScript, который следует использовать вместо устаревших методов, когда требуется сохранить все типы данных и избежать побочных эффектов от ссылок.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    4

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#structuredClone

#deep copy

#JavaScript

#clone

#structured clone algorithm

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию