慕斯709654
作为参考,对象的休息/传播在ECMAScript 2018中最终确定为阶段4。可以在此处找到建议。大多数情况下,对象重置和散布都以相同的方式进行,主要区别在于散布定义属性,而Object.assign()设置属性。这意味着Object.assign()触发设置器。值得记住的是,除此之外,对象休息/传播1:1映射到Object.assign()并以不同的方式作用于数组(可迭代)传播。例如,在扩展数组时,将扩展空值。但是,使用对象扩展时,空值会默默地扩展为零。数组(可迭代)传播示例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()的工作方式一致,两者都无提示地无提示地排除了null值。const x = null;const y = {a: 1, b: 2};const z = Object.assign({}, x, y);console.log(z); //{a: 1, b: 2}