未嵌套数组或对象的深拷贝
1.通过Object.assgin方法实现深度拷贝
let obj = {name:"wxt",age:25}
let obj1 = Object.assign({},obj);
obj.age = 18;
console.log(obj)
console.log(obj1)
2.通过扩展运算符实现
let obj = {name:"wxt",age:25};
let obj1 = {...obj}
嵌套数组或对象的深度拷贝
1.通过JSON.stringify方法转成json格式
2.再通过JSON.parse方法解析
3.由于对象或数组是引用数据类型,所有当改变obj1的值也会改变obj2的值,所有需要通过JSON.stringify转成字符串类型,然后再通过JSON.parse解析,就会切断对象的地址值而重新生成
let arr1 = [1,2,3,4,5,{name:"王小赛",o:{say:"哈哈哈"}}];
function deepCopy(obj){
console.log(JSON.stringify(obj))
console.log(typeof obj)
return JSON.parse(JSON.stringify(obj))
}
let arr2 = deepCopy(arr1)
console.log(arr2)