当然,ES6 +必须有一种方法来合并两个JavaScript对象,它是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (320)

我厌倦了总是不得不写这样的代码:

function shallowExtend(obj1,obj2){
  var key;
  for ( key in obj2 ) {
    if ( obj2.hasOwnProperty(key) === false )  continue;
    obj1[key] = obj2[key]
  }
}

或者如果我不想自己编写代码,请实现一个已经完成的库。毫无疑问,ES6 +将会为我们提供类似于Object.prototype.extend(obj2...)或的东西Object.extend(obj1,obj2...)

ES6 +也提供这样的功能吗?如果不在那里,那么是否计划了这样的功能?如果没有计划,那为什么不呢?

提问于
用户回答回答于

您可以使用Object.assign在ES6中进行浅层合并/扩展/分配:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

Object.assign(target... sources);

其中...源代表源对象。

注意:不要将语法定义中的...源与ES6扩展运算符混淆。

例:

var obj1 = {name: 'Daisy', age: 30};
var obj2 = {name: 'Casey'};

Object.assign(obj1, obj2);

console.log(obj1.name === 'Casey' && obj1.age === 30);
// true
用户回答回答于

您可以使用对象休息/传播:

const merged = {...obj1, ...obj2}

ECMAScript 提案目前处于阶段3,并通过使用阶段3预设在Babel中启用。

扫码关注云+社区

领取腾讯云代金券