Как скопировать объект
Короткий ответ
Оператор ... создаёт новый объект с теми же свойствами:
const user = { name: 'Anna', age: 25 };
const copy = { ...user };
copy.age = 26;
console.log(user.age, copy.age);Результат:
25 26Вложенные объекты
Такая копия поверхностная: вложенные объекты остаются общими.
const user = { name: 'Anna', address: { city: 'London' } };
const copy = { ...user };
copy.address.city = 'Paris';
console.log(user.address.city);Результат:
ParisГлубокая копия
structuredClone() копирует объект целиком, со всеми вложенными данными:
const user = { name: 'Anna', address: { city: 'London' } };
const copy = structuredClone(user);
copy.address.city = 'Paris';
console.log(user.address.city);Результат:
LondonЧастая ошибка
Присваивание объекта другой переменной не копирует его: обе переменные указывают на один и тот же объект:
const user = { name: 'Anna' };
const copy = user;
copy.name = 'Oleg';
console.log(user.name);Результат:
OlegФункции из этого ответа
- structuredClone — Создаёт глубокую копию объекта со всеми вложенными данными.
- Object.assign — Копирует свойства из одних объектов в другой.
- JSON.stringify — Преобразует значение в строку в формате JSON.