【发布时间】:2016-12-23 11:04:50
【问题描述】:
假设我们有一个对象数组。
调用Object.assign(...array) 会在索引为i 的对象覆盖索引为i-1 的对象中的现有属性的对象之间进行继承
例如:
var array=[{interf:'IPerson',name:'Someone'},{clss:'Person',name:'Ahmed'},{student:true}];
console.log(
Object.assign(...array) // Object.assign(array[0],array[1],array[2])
)
现在,使用 Babel 和建议的对象扩展语法,我们可以静态地做到这一点:
{...array[0],...array[1],...array[2]} // spread used for each object not for array
如何动态地做到这一点?
“扩展语法”的上下文有重叠。我的意思是如何对两者使用传播语法:
- 让阵列散布元素。
- 为输出字面量对象
{}做继承
?
我尝试了{...array},它返回{0:<array[0]>,1:<array[1]>,2:<array[2]>},它不与Object.assign(...array) 的输出相同。
【问题讨论】:
-
ES7 完成并发布,对象传播不是其中的一部分。只说“提议的对象传播语法”,不要说 ES7。
-
赋值与继承无关。使用术语“扩展”或“混合”。
-
@loganfsmyth:您认为我们应该为每个提案都贴上标签吗? (按需创建)
-
强硬的,不知道有没有人会用,不过应该不错
-
有人可以用 sn-p 提出一个替代方案吗?
标签: javascript babeljs ecmascript-next