首先数据类型分为两种:
简单的(一般的)和 复杂的(引入的)
简单的数据类型会在栈存储开辟一个存储空间,复杂的会在堆存储数据
浅拷贝
let obj1 = {
a:1
}
let obj2 = obj1
obj2.a = 20
console.log(obj1); //20
console.log(obj2); //20
obj1和obj2都在栈存储 obj1和obj2通过指针指向堆里的数据是同一条数据,所以更改的也是一样的
比如说需要两组一样的数据,当我们改变一组数据时不需要改动另一组数据。怎么解决呢,
看下边
---------------------------------------------------------------------------------------------------------------------------------深拷贝
(推荐)
let obj1 = {
a: 1
}
let obj2 = JSON.parse(JSON.stringify(obj1))
obj2.a = 20
console.log(obj1); //1
console.log(obj2); //20
obj两个名字保存在栈中,在它进行拷贝时其实就是在栈里新开辟了一个变量,好比两辆一模一样的车,配置却毫无关联
let obj1 = {
a: 1
}
let obj2 = {...obj1}
obj2.a = 20
console.log(obj1); //1
console.log(obj2); //20