js 淺拷貝和深拷貝

森林蘑菇_mushroom發表於2018-07-18

淺拷貝

* 注意淺拷貝的拷貝物件的格式

  • Object.assign
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來處理

相關文章