我在http://jsbin.com/givolafala/edit?html,js,console,output「Object.assign」在更深的層次
var oldObject = { name: 'John', address: { city: 'new york'}};
var newObject = Object.assign({}, oldObject);
console.log(oldObject);
console.log(newObject);
newObject.name = 'Mathew';
newObject.address.city = 'los angeles';
console.log(oldObject);
console.log(newObject);
具有樣品JSBin代碼在這個例子中變異狀態,我改變名稱其是在頂級從John
到Mathew
。 Object.assign
以新名稱Mathew
返回新狀態。 oldObject
保持其以前的值John
。
如果我更改任何其他級別的任何值,而不是根,它不起作用。在示例中,我將城市更改爲los angeles
,並且您會注意到newObject
和oldObject
具有相同的城市los angeles
。所以oldObject
狀態是變異的。
這是一個錯誤?
如果你想遞歸Object.assign簽出[deep-assign](https://www.npmjs.com/package/deep-assign) –