Pour le reste / la répartition de l'objet de référence est finalisé dans ECMAScript 2018 comme étape 4. La proposition peut être trouvée ici .
Pour la plupart, la réinitialisation et la répartition des objets fonctionnent de la même manière, la principale différence est que la répartition définit les propriétés, tandis que Object.assign () les définit . Cela signifie que Object.assign () déclenche des setters.
Il convient de se rappeler qu'à part cela, le repos / propagation d'objet 1: 1 correspond à Object.assign () et agit différemment de la propagation de tableau (itérable). Par exemple, lors de la propagation d'un tableau, les valeurs nulles sont réparties. Cependant, l'utilisation de valeurs nulles réparties sur un objet est silencieusement répartie sur rien.
Exemple de propagation en tableau (itérable)
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
Exemple de propagation d'objet
const x = null;
const y = {a: 1, b: 2};
const z = {...x, ...y};
console.log(z); //{a: 1, b: 2}
Ceci est cohérent avec la façon dont Object.assign () fonctionnerait, les deux excluent silencieusement la valeur nulle sans erreur.
const x = null;
const y = {a: 1, b: 2};
const z = Object.assign({}, x, y);
console.log(z); //{a: 1, b: 2}