Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как скопировать объект

Короткий ответ

Оператор ... создаёт новый объект с теми же свойствами:

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.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.