let声明变量a对象,let b = a;时,修改b中的age属性可能会改变a的属性值
所以要根据需求和实际情况选择适合的拷贝类型
<script>
let a = {
name:'zhang',
age:20,
child:{
name:'zhang1',
age:10,
},
test(){console.log('asdfhjkgl')}
};
// 浅拷贝
// let b = {...a};
// 修改b的child属性a的也会改变
// 深拷贝,修改b的引用属性,a的不会改变,但是a中如果有函数等情况会把函数丢失
let b = JSON.parse(JSON.stringify(a))
// 指向同一个地址,基本类型使用,b修改值不会改变a的值
// 引用类型使用时会改变a的值
// let b = a;
b.child.age=30
console.log(a,b)
</script>
上述是今天刚跟前端同事请教的内容,每种情况都有自己对应的利弊,按需使用