JS深拷贝方法
1.使用递归实现
function deepClone(obj){
//首先判断obj是否是基本类型和null
if(typeof obj != 'object'|| obj==null)
return obj; //基本类型或者null,直接返回当前obj
//再次判断obj是否为数组或对象,创建一个空的数组或对象
const newObj = obj instanceof Array?[]:{};
//for in 遍历obj
for(let key in obj){
newObj[key] = deepClone(obj[key]); //使用递归进行深度赋值给新的容器
}
return newObj; //返回拷贝的新数据
}
//示例:
const user = {
name:'张三',
age:18,
address:['湖北','湖南']
};
const user2 = deepClone(user); //调用拷贝函数
2.使用JSON方法实现
const user3 = JSON.parse(JSON.stringify(user)); //深度拷贝
//JSON方法解析
JSON.stringify()//将Js语句转成JSON字符串
JSON.parse()//将JSON字符串转成Js语句