什么时候用到?
复杂类型/引用类型(object,array,data等),复杂类型的值保存在堆空间中,所以要对复杂类型里的值进行复制时,需要用到深拷贝。
简单类型/值类型 (String、number、Boolean、undefined、null),值类型保存在栈内存中,浅拷贝即可。
深拷贝例子
let obj = {
num: 1,
name: '22',
}
let obj2 = JSON.parse(JSON.stringify(obj))
obj2.num = 23;
// 地址引向
console.log('obj2' + obj2.num); //num=23
console.log('obj' + obj.num); //num =1
深拷贝错误例子
let obj = {
num: 1,
name: '22',
}
let obj2
obj2 = obj;
obj2.num = 23;//这里将obj堆内存中的num更改了,所以obj2也是23
// 地址引向
console.log('obj2' + obj2.num); //num=23
console.log('obj' + obj.num); //num =23
浅拷贝例子
let obj = {
num: 1,
name: '22',
}
let obj2 = obj
obj2.name = '对对对';
console.log(obj) // {name:'对对对',num:1}
console.log(obj2) // {name:'对对对',num:1}