es6扩展运算符不结合键控对象

时间:2018-05-28 06:36:46

标签: javascript ecmascript-6

我想构建一个键控对象的对象。

为什么点差运算符不合并如下所用?相反,它只保留第二个对象。

let a = {
  key1: {
    floo: 'blar'
  }
}

let b = {
  key2: {
    floo: 'blar'
  }
}
console.log(...a, b);

最重要的是,请告诉我正确的方法!

由于

1 个答案:

答案 0 :(得分:3)

应该是

console.log({...a, ...b});

上面将合并两个对象,并分别创建一个key1key2的新对象。另请注意,对象的扩展运算符的工作方式与Object.assign()的工作方式不同。

请注意,合并对象只是一个引用。例如,修改对象的值,如

a.key1.floo = 'someotherval';

将改变a对象并反映在合并对象中。

有关详细信息,请参阅Object Literals部分中的传播。