javascript - es6展开运算符不组合键控对象

标签 javascript ecmascript-6

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

为什么展开运算符不按如下方式组合?相反,它只保留第二个对象。

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

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

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

谢谢

最佳答案

应该是

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

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

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

a.key1.floo = 'someotherval';

将改变a对象并反射(reflect)在合并的对象中。

欲了解更多信息,请参阅Object Literals中的传播部分。

关于javascript - es6展开运算符不组合键控对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50560448/

相关文章:

Javascript:如何将包含对象的对象转换并映射到数组中?

javascript - 显示与 JSON 数据的 'Open Hours' 日期/时间对齐的 div

javascript - 我可以发布我在 ES 和谐风格 JavaScript 中导入的内容吗?

javascript - 使用nodejs在字符串末尾添加双引号失败

javascript - 在 JavaScript 中使用数组作为传递参数

javascript - 所以我不能将 Infinity 作为数字放入 JSON 中,可以吗?

javascript - Youtube 嵌入式播放器工作 <no wrap> 但不是 onload

javascript - 如何在struts2应用程序中使用Jquery从一个弹出页面导航到另一个弹出页面

javascript - 为什么我们必须在 es6 箭头函数中用括号包裹 throw

javascript - javascript setter/getter 的使用