2016-08-16 6 views
10

オブジェクトの配列があるとします。Object.assign(... array)の代わりに

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]) 
 
)

とバベルを使用して:Object.assign(...array)を呼び出す

は、例えばインデックスi-1

とオブジェクトのインデックスiオーバーライド既存のプロパティを持つオブジェクトこれらのオブジェクト間の継承を行います提案されたオブジェクトは構文を広げ、我々はこれを静的に行うことができる:

{...array[0],...array[1],...array[2]} // spread used for each object not for array 

どのように動的に行うのですか?

「拡散構文」のコンテキストが重複しています。私は両方のための普及の構文を使用する方法を意味します:

  • 広がる要素のための配列。出力オブジェクトリテラル{}については
  • は継承

作るには?

Iは{...array}を試み、それがObject.assign(...array)同じ出力ない{0:<array[0]>,1:<array[1]>,2:<array[2]>}を返します。

+3

ES7が完了してリリースされましたが、オブジェクトの配布はその一部ではありません。ちょうど "提案されたオブジェクト拡散構文"と言うと、ES7とは言わない。 – loganfsmyth

+0

割り当ては継承とは関係ありません。用語「拡張」または「混合」を使用してください。 – Bergi

+0

@loganfsmyth:これらの提案ごとにタグを付けるべきだと思いますか? (要求時に作成) –

答えて

20

代わりarray[0]を変異の新しいオブジェクトを作成します

var obj = Object.assign({}, ...array) 

を探しています。

+0

'.assign()'のためにIE11の安全な方法がありますか?これで、[this](https://docs.microsoft.com/en-us/scripting/javascript/reference/object-assign-function-object-javascript)のためにこれを探しています(要件を参照) – Nukeface

+1

いいえ、あなたは安全にIE11で 'Object.assign'を使用してください。[polyfill it](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Polyfill) – Bergi

+0

私はちょうど判明しましたこのようにもなります、ありがとう – yussan