一句話來解釋什么是深淺拷貝,B拷貝A,當修改A,B如果變化,就是淺拷貝,反之就是深拷貝,
基本原理:
1.遞回函式
2.物件內的值都是簡單資料型別時 直接進行賦值
3.當我們遇到陣列和物件時,可以再次呼叫函式,利用遞回去拷貝陣列和物件內的每個值
4.先陣列 后物件 因為陣列也是物件
下面是一個實作深拷貝的函式:
1 function deepClone(obj) { 2 let objClone = Array.isArray(obj) ? [] : {}; 3 if (obj && typeof obj === "object") { 4 for (key in obj) { 5 if (obj.hasOwnProperty(key)) { 6 //判斷ojb子元素是否為物件(復雜資料型別),如果是,遞回復制 7 if (obj[key] && typeof obj[key] === "object") { 8 objClone[key] = deepClone(obj[key]); 9 } else { 10 //如果不是,簡單復制(基本資料型別) 11 objClone[key] = obj[key]; 12 } 13 } 14 } 15 } 16 return objClone; 17 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/548751.html
標籤:其他
