深浅拷贝实例
如果想要一个一模一样的新对象??
let obj2 = obj1; //不能得到新对象,因为他们是引用关系,指向同一个内存地址
想要得到一个一样的对象,就需要深拷贝和浅拷贝
//浅拷贝:只拷贝一层数据
let obj2 = {};
for (let key in obj1) {
obj2[key] = obj1[key];
}
console.log(obj2);
console.log(obj1 === obj2);
obj1.name = '关羽';
console.log(obj1, obj2);
//浅拷贝:Object.assign()
let obj3 = Object.assign({}, obj1);
console.log(obj3);
console.log(obj3 === obj1);
<body>
<script>
//浅拷贝的问题:
let obj1 = { name: '刘备', age: 19, like: ['打球', '旅游', '吃肉'] };
let obj2 = {};
for (let key in obj1) {
obj2[key] = obj1[key];
}
obj1.like[0] = '打架';
console.log(obj1)
console.log(obj2) //由于浅拷贝只遍历一层数据,如果数据又是一个引用类型,依然会影响
//深拷贝:遍历数组或对象的所有子数据,每一层都单独拷贝
let obj3 = JSON.parse(JSON.stringify(obj1));
obj3.like[0] = '打游戏';
console.log(obj1);
console.log(obj3);
</script>
</body>
推荐阅读:
扫描二维码,在手机上阅读