Back to questions
Middle+
1
Как скопировать объект в JavaScript? Чем поверхностное копирование отличается от глубокого?
Companies where asked
ООО Делай мебель
Answer from AI
sobes.tech AI
В JavaScript для копирования объекта можно использовать несколько способов:
- Поверхностное копирование (shallow copy):
Object.assign({}, obj)— копирует только верхний уровень свойств.- Оператор расширения:
{ ...obj }
- Глубокое копирование (deep copy):
- Рекурсивное копирование всех вложенных объектов.
- Использование
JSON.parse(JSON.stringify(obj))— простой способ, но не работает с функциями, датами, undefined и т.п. - Специализированные библиотеки, например lodash (
_.cloneDeep(obj))
Разница:
- Поверхностное копирование копирует только первый уровень свойств. Если в объекте есть вложенные объекты, то копируются ссылки на них, а не сами объекты.
- Глубокое копирование создает полностью независимую копию, включая все вложенные объекты.
Пример поверхностного копирования:
const original = { a: 1, b: { c: 2 } };
const copy = { ...original };
copy.b.c = 3;
console.log(original.b.c); // 3 — изменился и оригинал, так как b — ссылка
Пример глубокого копирования с JSON:
const original = { a: 1, b: { c: 2 } };
const deepCopy = JSON.parse(JSON.stringify(original));
deepCopy.b.c = 3;
console.log(original.b.c); // 2 — оригинал не изменился