Object.assign
Копирует свойства из одних объектов в другой.
Доступно с: ES2015
Синтаксис
Object.assign(target, ...sources)Параметры
| Параметр | Тип | Описание |
|---|---|---|
| target | object | Объект, в который копируются свойства. Он изменяется. |
| ...sources | object | Объекты, из которых копируются свойства. |
Возвращаемое значение
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 — Запрещает любые изменения объекта.
Вопросы и ответы по теме
В учебнике
- Перебор и функции Object — Как перебрать объект в JavaScript: Object.keys, Object.values, Object.entries, Object.fromEntries, for...in и Object.hasOwn.