Sobes.tech
Back to questions
Middle+
2

Как сделать глубокое копирование объектов в JavaScript?

Companies where asked
Employcity

Answer from AI

sobes.tech AI

Глубокое копирование объектов в JavaScript означает создание новой копии объекта со всеми вложенными объектами, а не просто копирование ссылок.

Самый простой способ — использовать JSON.parse(JSON.stringify(obj)), но он не копирует функции, даты, undefined и другие специальные типы.

Для более универсального глубокого копирования можно написать рекурсивную функцию или использовать библиотеки, например lodash (_.cloneDeep).

Пример простой рекурсивной функции глубокого копирования:

function deepClone(obj) {
  if (obj === null || typeof obj !== 'object') return obj;

  if (Array.isArray(obj)) {
    return obj.map(deepClone);
  }

  const cloned = {};
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
      cloned[key] = deepClone(obj[key]);
    }
  }
  return cloned;
}

const original = { a: 1, b: { c: 2 } };
const copy = deepClone(original);
copy.b.c = 3;
console.log(original.b.c); // 2 — оригинал не изменился

Этот подход работает для простых объектов без циклических ссылок.