2017-09-11 6 views
-4

Object.assign関数の単純な機能について少し混乱します。以下を取る:{}はES6 Object.assign関数で何をするのですか

const a = {'a':'1'}; 
const b = {'b':'2'}; 
const final = Object.assign(a, b) // {a:1, b:2} 

ことと、次の違いは何である:

const a = {'a':'1'}; 
const b = {'b':'2'}; 
const final = Object.assign({}, a, b) // {a:1, b:2} 

開始{}対象とするときの目的は何か、それを使用するために適切な、またはそれを残しています完全に?

+2

uhm。それはタイプミスですか? 'Object.assign {a、b}'でなければ、あなたの質問は[ドキュメントで回答されています](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign) 。 –

+1

'Object.assign({}、a、b)'は副作用なしです。つまり、aを変更するのではなく、新しいオブジェクトを作成します。 –

+0

@ zero298申し訳ありません。 – Jon

答えて

1

Object.assignは、最初の引数を変更します。たとえば、最初の例では、

const a = {'a':'1'}; 
const b = {'b':'2'}; 
const final = Object.assign(a, b) // {a:1, b:2} 
console.log(a); // {a:1, b:2} 

オブジェクトbのプロパティがオブジェクトaにコピーされます。

しかし、あなたの第二の例では:

const a = {'a':'1'}; 
const b = {'b':'2'}; 
const final = Object.assign({}, a, b) // {a:1, b:2} 
console.log(a); // {a:1} 

{}はaとbのプロパティがコピーされるに新しいオブジェクトを作成します。 Object.assignは最初の引数を返します。

関連する問題