Per riferimento oggetto resto / diffusione è finalizzato in ECMAScript 2018 come fase 4. La proposta è disponibile qui .
Per la maggior parte il reset e la diffusione degli oggetti funzionano allo stesso modo, la differenza chiave è che spread definisce le proprietà, mentre Object.assign () le imposta . Ciò significa che Object.assign () attiva i setter.
Vale la pena ricordare che, a parte questo, l'oggetto rest / spread 1: 1 esegue la mappatura su Object.assign () e agisce in modo diverso sulla diffusione dell'array (iterabile). Ad esempio, durante la diffusione di un array vengono diffusi valori null. Tuttavia, usando i valori null di diffusione dell'oggetto vengono silenziosamente diffusi a nulla.
Array (Iterable) Esempio di diffusione
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
Esempio di diffusione dell'oggetto
const x = null;
const y = {a: 1, b: 2};
const z = {...x, ...y};
console.log(z); //{a: 1, b: 2}
Ciò è coerente con come funzionerebbe Object.assign (), entrambi escludere silenziosamente il valore null senza errori.
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}