我们知道,对象类型的赋值其实是复制了地址,这就会导致,我改变了一方,其他也都跟着改变了。
我们在开发中通常不希望出现这样的问题,此时我们可以使用「浅拷贝」。
1、我们可以使用Object.assign()
来进行浅拷贝,这个函数会拷贝所有的属性值到新对象中。如果属性值是对象,那么拷贝的就是「地址」。
let a = { age: 1 } let b = Object.assign({}, a) a.age = 2 console.log(b.age) // 1
2、我们还能通过展开运算符...
来实现浅拷贝:
let a = { age: 1 } let b = { ...a } a.age = 2 console.log(b.age) // 1
注:通常浅拷贝就能解决大部分问题了,但是遇到下面这种情况就需要使用「深拷贝」了:
let a = { age: 1, hobbies: { first: '篮球' } } let b = { ...a } a.hobbies.first = '足球' console.log(b.hobbies.first) // 足球