首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ES6+中合并两个javascript对象?

如何在ES6+中合并两个javascript对象?
EN

Stack Overflow用户
提问于 2012-12-13 12:16:38
回答 4查看 94.8K关注 0票数 157

我已经厌倦了总是要写这样的代码:

代码语言:javascript
复制
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+是否提供了这样的功能呢?如果还没有,那么有没有计划这样的功能呢?如果没有计划,那为什么不呢?

EN

回答 4

Stack Overflow用户

发布于 2015-09-03 17:54:58

您可以使用object spread syntax来执行以下操作:

代码语言:javascript
复制
const merged = {...obj1, ...obj2}

对于数组,扩展运算符已经是ES6 (ES2015)的一部分,但对于对象,它是在ES9 (ES2018)的语言规范中添加的。它的提议在此之前很久就已经在Babel等工具中默认启用了。

票数 178
EN

Stack Overflow用户

发布于 2016-08-17 06:34:55

ES6

代码语言:javascript
复制
Object.assign(o1,o2) ; 
Object.assign({},o1,o2) ; //safe inheritance
var copy=Object.assign({},o1); // clone o1
//------Transform array of objects to one object---
var subjects_assess=[{maths:92},{phy:75},{sport:99}];
Object.assign(...subjects_assess); // {maths:92,phy:75,sport:99}

ES7或巴别塔

代码语言:javascript
复制
{...o1,...o2} // inheritance
 var copy= {...o1};
票数 9
EN

Stack Overflow用户

发布于 2012-12-15 00:50:05

目前正在讨论添加Object.mixin以满足您所要求的行为。https://mail.mozilla.org/pipermail/es-discuss/2012-December/027037.html

虽然它还没有在ES6草案中,但似乎有很多人支持它,所以我认为它很快就会出现在草案中。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13852852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档