es6浅复制和深复制

输出结果是什么?
alert(b); => 1234 ?
alert(a); => 123 ?
实际上结果并非我们想的那样:

结果都是1234,其实,a,b是共用同一个地址,所以虽然看起来是两个对象,其实就是一个对象,a===b,这就是深复制,复制的不仅仅是数据,而且连地址一起复制过来了,相当于Windows的快捷方式,表面上看起来一个在C盘,一个在D盘,其实都是一个文件。那么,如果我们仅仅想让b变成1234呢?a和b要不同,我们如何来做。

以上是es6的写法,假若操作的是一个对象怎么写?

和上次的结果一样结果肯定两个都是输出浅复制。

如果只想改变a而不改变b呢?

浅拷贝,利用for in 把a中属性拷贝给b,但是只是拷贝了一个副本,实际上当修改b的值是不会改变a的值的。

扫描二维码关注公众号,回复: 6029155 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_33153761/article/details/89553563