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 — оригинал не изменился
Этот подход работает для простых объектов без циклических ссылок.