2017-09-11 71 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,但會創建一個新的對象,而之前的方法會改變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將返回其第一個參數。