Поверхностное копирование создает новый объект, но любые вложенные объекты копируются по ссылке — это означает, что изменения вложенных свойств также повлияют на исходный объект.
Распространенные методы:
{ ...obj }Object.assign({}, obj)const original = { a: 1, nested: { b: 2 } };
const copy = { ...original };
copy.nested.b = 99; // также изменяет original.nested.b
Глубокое копирование рекурсивно клонирует все уровни объекта, создавая полностью независимую копию без общих ссылок.
Распространенные методы:
structuredClone(obj) — современный, рекомендуемый способJSON.parse(JSON.stringify(obj)) — простой, но с ограничениями_.cloneDeep(obj) из Lodash — надёжен для сложных случаевJSON.parse(JSON.stringify(obj)) не обрабатывает:
undefinedDate (преобразуются в строки)structuredClone() справляется с большинством случаев, но не поддерживает функции и экземпляры классов.
Оператор расширения { ...obj } создаёт поверхностную копию, где вложенные объекты копируются по ссылке, поэтому изменение вложенного свойства в копии также повлияет на исходный объект.
Новый — ещё не проверен сообществом
Вы