// 深拷贝的用法
/* let newList=JSON.parse(JSON.stringify(list)); //深拷贝
*/
// 手写 标注的深拷贝 ==>引用数据类型(数组、对象)
function deepClone(source){
// [] ===Array(基类)
// {} ===Object(基类)
const targetObj=source.constructor===Array?[]:{};
// 数组的构造函数指向?
// 对象的构造函数指向?
for(let keys in source){
if(source.hasOwnProperty){
// keys 基础类型 、对象、数组
if(source[keys] && typeof source[keys]==='object'){
// 数组或对象
targetObj[keys]=source[keys].constructor===Array?[]:{};
// 递归
targetObj[keys]=deepClone(source[keys]);
}else{
targetObj[keys]=source[keys] //基本数据类型,直接赋值
}
}
}
return targetObj;
}
let objC={
ff:'name',
gg:1,
obj:{
str:11,
},
arr:[1,2,4]
}
let newObjC=deepClone(objC);
newObjC.ff="22222222222";
console.log(objC,newObjC);
// 运行代码、容错代码、提示代码(维护层的代码)
js的深拷贝
最新推荐文章于 2024-03-26 23:45:00 发布