Encodera

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

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

Справочник JavaScript

Object.assign

Копирует свойства из одних объектов в другой.

Доступно с: ES2015

Синтаксис

Object.assign(target, ...sources)

Параметры

ПараметрТипОписание
targetobjectОбъект, в который копируются свойства. Он изменяется.
...sourcesobjectОбъекты, из которых копируются свойства.

Возвращаемое значение

objectТот же объект target.

Примеры

Слияние настроек: последние значения побеждают:

const defaults = { theme: 'light', size: 14 };
const user = { size: 16 };
 
console.log(Object.assign({}, defaults, user));

Результат:

{
  "theme": "light",
  "size": 16
}

То же через spread — так пишут чаще:

const defaults = { theme: 'light', size: 14 };
const user = { size: 16 };
const settings = { ...defaults, ...user };
 
console.log(settings.theme, settings.size);

Результат:

light 16

Примечания

Копия поверхностная: вложенные объекты не копируются, а передаются по ссылке. Для глубокой копии используйте structuredClone().

Первым аргументом передавайте пустой объект {}, если исходные объекты менять нельзя.

См. также

  • Spread syntax — Три точки раскрывают массив или объект на отдельные элементы.
  • structuredClone — Создаёт глубокую копию объекта со всеми вложенными данными.
  • Object.freeze — Запрещает любые изменения объекта.

Вопросы и ответы по теме

В учебнике

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

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