W przypadku obiektu referencyjnego odpoczynek / rozkład jest finalizowany w ECMAScript 2018 jako etap 4. Propozycję można znaleźć tutaj .
W większości przypadków resetowanie i rozkładanie obiektów działa w ten sam sposób, kluczową różnicą jest to, że rozkład definiuje właściwości, a Object.assign () je ustawia . Oznacza to, że Object.assign () wyzwala ustawiacze.
Warto pamiętać, że poza tym reszta obiektu / rozkład 1: 1 odwzorowuje na Object.assign () i działa inaczej niż rozkład tablic (iterowalny). Na przykład przy rozkładaniu tablicy rozkładane są wartości zerowe. Jednak przy użyciu rozkładania obiektów wartości zerowe są po cichu rozkładane na nic.
Przykład rozprzestrzeniania się macierzy (iterowalnej)
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
Przykład rozprzestrzeniania się obiektu
const x = null;
const y = {a: 1, b: 2};
const z = {...x, ...y};
console.log(z); //{a: 1, b: 2}
Jest to zgodne ze sposobem działania Object.assign (), oba po cichu wykluczają wartość zerową bez błędu.
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}