JS深拷貝遞迴實現

2022-03-18 04:40:22 字數 567 閱讀 3459

方法1.要提前宣告乙個物件

var a =,

arr:[1,2,3],

say:

function

() ,

null

:{} };

var b ={};

//遞迴賦值

function

deepcopy(a, b) //

js的每個物件constructor指向它的建構函式

deepcopy(a[item], b[item]);

} else

}} deepcopy(a, b);

方法二:直接返回乙個深拷貝的物件

function

deepclone(source); //

判斷複製的目標是陣列還是物件

for(let keys in source);

targetobj[keys] =deepclone(source[keys]);

}else

}}

return

targetobj;

}

js遞迴深拷貝

深拷貝和淺拷貝的區別 淺拷貝 就是簡單的複製,用等號即可完成 let a let b a這就完成了乙個淺拷貝 但是當修改物件b的時候,我們發現物件a的值也被改變了 b.a 10 console.log a.a 10這是因為淺拷貝只複製了指向物件的指標,新舊物件共用同一塊記憶體,修改某乙個物件的同時也...

js實現深拷貝

深拷貝 深拷貝本身只針對較為複雜的object型別資料,但是含義的話比如基本資料型別a和b的賦值操作,賦值之後b有自己的記憶體空間,a,b之間互不影響 淺拷貝 引用資料型別 名存在棧記憶體中,值存在於堆記憶體中,但是棧記憶體會提供乙個引用的位址指向堆記憶體中的值。當b a進行拷貝時,其實複製的是a的...

JS 深拷貝實現

web平台上一直在刻意的避開深拷貝,一直使用json.parse json.stringify object 避開深拷貝的問題。知道今天碰見個bug,json將function轉化為了字串,排到這個bug時,憔悴 若是node.js平台的話,一直現成的輪子等著挑,可惜是web,不太敢亂引入,手寫乙個...