2.递归和Stringify和parse实现深拷贝
//判断类型
function getType(o){
let fn={}.toString
//{}==Object.prototype(表示一个空对象)
//[object undefined]
return fn.call(o).slice(8.-1).toLowerCase()
}
function copy(obj){
//数组的处理
if(getType(obj)=="array"){
let result = []
//遍历数组的每一项,把每一项数组深拷贝给新数组
obj.forEach(item=>{
result.push(copy(item))
})
return result
}
//如果是对象
if(getType=="object"){
let result = {}
Object.entries(obj).forEach(([key,value])=>{
result[key]=copy(value)
})
}
//其他情况直接返回
return obj
}