в чем разница между object spread и object assign в javascript при работе с дефолтными значениями

Аватар пользователя Ivan Gagarinov
Ivan Gagarinov
27 ноября 2024

Есть несколько способов копирования объектов и добавления/изменения их свойств. Два из наиболее часто используемых механизма для этого — spread-оператор и метод Object.assign(). Оба способа могут использоваться для создания новых объектов и изменения их свойств, но у них есть важные различия, особенно в контексте задания дефолтных значений:

Spread-оператор, позволяет "распространять" свойства одного объекта в новый объект.

Пример:

const defaults = { a: 1, b: 2 };
const options = { b: 3 };

const config = { ...defaults, ...options };
console.log(config); // { a: 1, b: 3 }

В этом примере свойства из options "распространяются" в новый объект config, при этом если там совпадают ключи (свойства), то значения из более позднего объекта (в данном случае options) перезаписывают значения из предыдущего (в данном случае defaults).

Метод Object.assign() принимает целевой объект и один или более источников, откуда он будет копировать собственные перечисляемые свойства. Этот метод также может использоваться для создания нового объекта, но синтаксис несколько отличается.

const defaults = { a: 1, b: 2 };
const options = { b: 3 };

const config = Object.assign({}, defaults, options);
console.log(config); // { a: 1, b: 3 }

Как и в случае с оператором распространения, свойства из options перезаписывают свойства из defaults, если ключи совпадают. Однако здесь нужно указать пустой объект в качестве первого аргумента, чтобы создать новый объект, в противном случае изменения будут применены к найденному объекту.

0 0
Познакомьтесь с основами JavaScript бесплатно