1. 程式人生 > 其它 >一、深拷貝和淺拷貝

一、深拷貝和淺拷貝

  一、淺拷貝

  1、淺拷貝:淺拷貝的只是拷貝第一層,拷貝的型別分二種,一種是基礎資料型別,那麼這樣直接拷貝,且修改後不會影響另外一個。另外一種拷貝的是一個物件或者陣列等,那只是拷貝它的引用(地址),意味著如果被被拷貝/拷貝物件修改了一個物件的屬性或者陣列中的值,那麼會影響到另外一個物件,這種現象稱為淺拷貝。

  

  附程式碼

  

     let obj = {
            id :1,
            name:'YZengXin',
            msg:{
                age:18
            }
        }
        let o 
= {}; for (const key in obj) { o[key] = obj[key]; }

  2、深拷貝:拷貝多層,每一層的資料都拷貝,但是和淺拷貝不同,深拷貝拷貝多層物件不是拷貝一個引用,而是基本型別,也就是說改了其中一個屬性不會影響到另外一個

 function deepCopy(newObj,oldObj)
        {
            if(newObj == null){
                newObj = {};
            }

            for (const key in
oldObj) { let item = oldObj[key]; if(item instanceof Array){ newObj[key] = {}; deepCopy(newObj[key],item); }else if(item instanceof Object){ newObj[key] = {}; deepCopy(newObj[key],item); }
else{ newObj[key] = item; } } } deepCopy(o,obj);
View Code