[英]Spread operator equivalent of Object assign
将这些对象合并到散布算子中相当于什么? 我想在我的redux应用中使用价差而不是分配。
return Object.assign({}, obj1, obj2)
等效为:
return { ..obj1, ...obj2 };
但是,如果不进行转译(例如通过babel进行翻译),这将无法工作,因为对象剩余分布是第三阶段的建议,并且当前浏览器不支持。 如果您使用babel,则必须使用Object rest spread transform babel插件或babel stage-3预设 。
如文档中所述:
注意:通常,ES6中的散布运算符在复制阵列时会深入一层。 因此,它们不适合复制多维数组。 与Object.assign和Object Spread运算符相同。 请看下面的示例,以更好地理解。
这意味着扩展是在新对象中进行的,因此不需要像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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.