JS實現深拷貝的方法


1. 使用遞歸的方式實現深拷貝

復制代碼
1 function deepClone(obj){
 2   let objClone =  Array.isArray(obj) ? [] : {};
 3   if (obj && typeof obj === 'object') {
 4     for(let key in obj){
 5       if (obj[key] && typeof obj[key] === 'object'){
 6         objClone[key] = deepClone(obj[key]);
 7       }else{
 8         objClone[key] = obj[key]
 9       }
10     }
11   }
12   return objClone;
13 }
復制代碼

2. 通過JSON對象實現深拷貝 

1
2
3
4
function  deepClone2(obj) {
   let  _obj = JSON.stringify(obj),
   return  JSON.parse(_obj);
}

 注意: 無法實現對象中方法的深拷貝

3. 通過Object.assign()拷貝

注意: 當對象只有一級屬性為深拷貝;

當對象中有多級屬性時,二級屬性后就是淺拷貝

 二,數組深拷貝的幾種方法

1. concat(arr1, arr2,....)

注意:當數組中的元素均為一維是深拷貝

          數組中元素一維以上是值的引用

 

 

 

 

 

2. slice(idx1, idx2)

參數可以省略

1)沒有參數是拷貝數組

2)只有一個參數是從該位置起到結束拷貝數組元素

3)兩個參數,拷貝從起始位置到結束位置的元素(不包含結束位置的元素:含頭不含尾)

注意:當數組中的元素均為一維是深拷貝

          數組中元素一維以上是值的引用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM