一、深拷貝和淺拷貝
阿新 • • 發佈:2022-03-30
一、淺拷貝
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 inView CodeoldObj) { 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);