Object.assign(...数组)的替代方案

Abd*_*UMI 27 javascript babeljs ecmascript-next

假设我们有对象数组.

调用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])
)
Run Code Online (Sandbox Code Playgroud)

现在,使用Babel和建议的对象扩展语法,我们可以静态地执行此操作:

{...array[0],...array[1],...array[2]} // spread used for each object not for array
Run Code Online (Sandbox Code Playgroud)

如何动态地做到这一点?

"扩散语法"的上下文重叠.我的意思是如何使用扩展语法:

  • 用于传播元素的数组.
  • 对于输出文字对象{}进行继承

我试着{...array}和它返回{0:<array[0]>,1:<array[1]>,2:<array[2]>}不是作为输出相同Object.assign(...array).

Ber*_*rgi 34

你在找

var obj = Object.assign({}, ...array)
Run Code Online (Sandbox Code Playgroud)

这会创建一个新对象而不是变异array[0].

  • 不,您可以在 IE11 中安全地使用 `Object.assign`,只需 [polyfill it](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill) (2认同)