let x = {a: 'ax', b: 'bx'}
let y = {a: 'ay', c: 'cy'}
let z = {...x, ...y} // => {a: "ay", b: "bx", c: "cy"}
let z = {...y, ...x} // => {a: "ay", c: "cy", b: "bx"}
为什么ay
始终覆盖a
值?
如果我想以这种方式合并多个对象,我怎么知道哪个会覆盖哪个?
答案 0 :(得分:0)
为什么ay总是覆盖一个值?
它没有,这取决于订单x
和y
的列出(见下文,z.a
总是"ay"
的错误观察)。这是因为对象初始值设定项中的属性按顺序处理。这与我们最终o.a
在这里结果为42的原因相同:
const o = {
a: 67,
a: 42
};
...什么是覆盖顺序?
最后胜利。
请注意,结果不是您所描述的:
let x = {a: 'ax', b: 'bx'}
let y = {a: 'ay', c: 'cy'}
console.log({...x, ...y}) // => {a: "ay", b: "bx", c: "cy"}
console.log({...y, ...x}) // => {a: "ax", c: "cy", b: "bx"}
// Note -------------------------^^^^^^^
.as-console-wrapper {
max-height: 100% !important;
}