Для решти / розповсюдження опорних об'єктів завершено у ECMAScript 2018 як етап 4. Пропозицію можна знайти тут .
Здебільшого скидання та розповсюдження об'єкта працюють однаково, ключовою відмінністю є те, що спред визначає властивості, а Object.assign () встановлює їх . Це означає, що Object.assign () запускає сетери.
Варто пам’ятати, що, крім цього, об'єкт rest / spread 1: 1 відображається в Object.assign () і діє по-іншому для масиву (iterable) розповсюдження. Наприклад, при поширенні масиву нульові значення поширюються. Однак за допомогою об’єктного розвороту нульові значення мовчки поширюються ні до чого.
Приклад поширення масиву (Ітерабельний)
const x = [1, 2, null , 3];
const y = [...x, 4, 5];
const z = null;
console.log(y); // [1, 2, null, 3, 4, 5];
console.log([...z]); // TypeError
Приклад поширення об’єкта
const x = null;
const y = {a: 1, b: 2};
const z = {...x, ...y};
console.log(z); //{a: 1, b: 2}
Це відповідає тому, як Object.assign () буде працювати, обидва мовчки виключають нульове значення без помилок.
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}