我已经厌倦了总是要写这样的代码:
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+是否提供了这样的功能呢?如果还没有,那么有没有计划这样的功能呢?如果没有计划,那为什么不呢?
发布于 2015-09-03 17:54:58
您可以使用object spread syntax来执行以下操作:
const merged = {...obj1, ...obj2}
对于数组,扩展运算符已经是ES6 (ES2015)的一部分,但对于对象,它是在ES9 (ES2018)的语言规范中添加的。它的提议在此之前很久就已经在Babel等工具中默认启用了。
发布于 2016-08-17 06:34:55
ES6
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或巴别塔
{...o1,...o2} // inheritance
var copy= {...o1};
发布于 2012-12-15 00:50:05
目前正在讨论添加Object.mixin
以满足您所要求的行为。https://mail.mozilla.org/pipermail/es-discuss/2012-December/027037.html
虽然它还没有在ES6草案中,但似乎有很多人支持它,所以我认为它很快就会出现在草案中。
https://stackoverflow.com/questions/13852852
复制相似问题