淺拷貝
* 注意淺拷貝的拷貝物件的格式
let test = {id: 1};
let copy = Object.assign({}, test);
test.id = 2;
console.log(copy.id); // 1
複製程式碼
let test = {id: 1};
let copy = {...test};
test.id = 2;
console.log(copy.id); // 1
複製程式碼
深拷貝
- JSON.parse(JSON.stringify(object))
- 此方法適用於該格式 let test = {id:1,name:{first_name:2,last_name:3}}
- 無法拷貝屬性值undefined, 無法拷貝屬性值函式,無法拷貝迴圈引用物件-直接報錯。
let test = {
id: 1,
user_name: undefined,
addr: function() {},
name: {
first_name: 'simida',
last_name: 'gg'
}
}
let copy = JSON.parse(JSON.stringify(test))
console.log(copy) // {id: 1,name: {first_name: 'simida',last_name: 'gg'}}
複製程式碼
最後,淺拷貝,深拷貝都可以直接用lodash來處理
- 具體操作請參考Lodash 和 google
- 淺拷貝
- 深拷貝