在查看ES6文档时,我注意到建议使用扩展语法而不是更详细的Object.assign()
方法。但是,我对如何实现这一点感到困惑。
在这种情况下object
是否被分解为key: value
对,之后是逗号右边的属性是添加还是被覆盖,最后被重新组装?
答案 0 :(得分:3)
在这种情况下,对象是否被分解为键:值对,之后是逗号右边的属性是添加还是被覆盖,最后被重新组装?
原始对象object
的键值对实际上正在与具有额外属性var2
的新对象组合使用(合并)(它们将合并到newObject
})。
您可以将其视为object
正在成为使用传播语法的地方newObject
的子集,而具有相同键的属性将被覆盖。
检查以下示例:
const object = { txt: 'Test' };
const newObject = {...object, var2: 'aa' };
// logs Object {txt: "Test", var2: "aa"}
console.log(newObject);
const object2 = { txt: 'Test' };
const newObject2 = {...object, txt: 'Test2', var2: 'aa' };
// Object {txt: "Test2", var2: "aa"}
console.log(newObject2);
// merging all objects to a new object
var object3 = {first: 'Hello', second: 'World'};
var newObject3 = {...object, anotherVar: 'stack', ...object2, ...object3};
// Object {txt: "Test", anotherVar: "stack", first: "Hello", second: "World"}
console.log(newObject3);