function shallowClone(target) {
if(typeof target === 'object' && target !== null){
if(Array.isArray(target)){
return [...target]
}else{
return {...target}
}
}else{
return target;
}
}
function deepClone1(target) {
return JSON.parse(JSON.stringify(target));
}
function deepClone2(target,map = new Map()){
if(typeof target === 'object' && target !== null){
const cache = map.get(target);
if(cache){
return cache;
}
const result = Array.isArray(target)?[]:{}
map.set(target,result)
for(const key in target){
if(target.hasOwnProperty(key)){
result[key] = deepClone2(target[key],map)
}
}
return result;
}else{
return target;
}
}
const obj = {a:1,b:{m:2}}
const cloneObj = deepClone2(obj);
obj.b.m = 5;
console.log('obj--',obj)
console.log('clone--',cloneObj)
console