扩展运算符相当于对象赋值

Spread operator equivalent of Object assign

本文关键字:赋值 对象 相当于 运算符 扩展      更新时间:2023-09-26

将这些对象合并为展开操作符的等效方法是什么?我想在redux应用中使用spread而不是assign

return Object.assign({}, obj1, obj2)

相当于:

return { ..obj1, ...obj2 };

然而,如果没有编译(例如通过babel),这将无法工作,因为对象rest扩展是第三阶段的推荐,目前的浏览器不支持。如果你使用babel,你必须使用Object rest spread transform babel插件或babel stage-3预设。

如文档中所述:

注意:在ES6中,扩展操作符通常会深入一层while复制数组。因此,它们不适合复制多维数组。Object也是同样的情况。分配和对象扩展操作符。看看下面的例子可以更好地理解理解。

这意味着扩展是在一个新的对象中进行的,所以不需要像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);

自己看