方法一
function deepClone(value){
// 对于基本类型的数据 直接返回
if(typeof value === 'object'){
return value
}
// 对于引用类型的数据,判断是数组还是对象,然后进行遍历赋值
// 通过instanceof判断是数组还是对象
let newValue = value instanceof Array ? [] : {}
for(let key in value){
// 判断一下key是不是自身的属性,如果返回false则代表是在其原型上的属性,不进行拷贝
if(value.hasOwnProperty(key)){
if(typeof value[key] !== 'object'){
// 基本类型数据 直接赋值
newValue[key] = value[key]
}else{
// 引用类型数据 深拷贝后赋值
newValue[key] = deepClone(value[key])
}
}
}
return newValue
}
方法二
function deepClone(value){
// 简单粗暴
return JSON.parse(JSON.stringify(value))
}