将这些对象合并到扩展运算符相当于什么?我想在我的redux应用程序中使用spread而不是assign。
return Object.assign({}, obj1, obj2)
答案 0 :(得分:3)
等价物是:
return { ..obj1, ...obj2 };
然而,如果不进行转换(例如babel),这将无法工作,因为对象休息传播是阶段3推荐,并且当前浏览器不支持。如果您使用babel,则必须使用Object rest spread transform babel插件或babel stage-3 preset。
答案 1 :(得分:2)
正如docs:
中所述注意:通常,ES6中的扩展运算符深度为一级 复制数组。因此,它们不适合复制 多维数组。这与Object.assign和。的情况相同 对象传播运算符。请看下面的示例以获得更好的效果 理解。
这意味着传播是在一个新对象中进行的,因此不需要像Object.assign
一样传递一个空对象。因此你可以这样做:
return {...obj1, ...obj2}
作为补充说明,以下是babel如何转换传播运算符:
const a = {...obj1, ...obj2}
成为:
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var a = _extends({}, obj1, obj2);