每日浅浅一决: 浅拷贝和深拷贝
- 引用型数据是存储在堆中的,它会在栈中保留一个指向堆中位置的指针,而其他类型都是存储在栈中的。
- 浅拷贝:浅拷贝只是复制指向某个对象的指针,即它的引用地址,浅拷贝后修改会相互影响。
- 深拷贝:深拷贝是将其完全复制,不会指向共同的内存,修改不会相互影响。
- 深拷贝的方法:
<body>
<script>
const obj1 = {
name: "李华",
age: 20,
sex: "男",
address: "四川成都",
grade: [20, 30, 50, 40],
girls: {
name: "琳琳",
sex: "女",
age: 20
}
}
function myDeepCopy(obj = []) {
if(typeof obj !== 'object' || obj == null) {
return obj
}
let resulte;
if(obj instanceof Array) {
resulte = []
} else {
resulte = {}
}
for(let key in obj) {
resulte[key] = myDeepCopy(obj[key])
}
return resulte
}
let obj2 = myDeepCopy(obj1)
console.log("obj2:" + obj2.name)
obj2.name = "张三"
console.log("obj1:" + obj1.name)
console.log("obj2:" + obj2.name)
</script>
</body>
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/bbe4467bdae2cdde5766884c57b74d3a.png)