在开发过程中,前端获取到后端的数据之后,通常直接复制后就使用,比如:

var _data = res.data; //浅克隆   data是一个数组

这就是浅克隆的写法,因为后端返回的data是一个数组,而数组是引用数据类型(自行了解基本数据类型和引用数据类型)
如果我们接下来的代码对 _data 进行的处理操作,res.data也会一起改变,这是因为浅克隆, 克隆的是一个地址,而不是实际变量值。

下面我用我的实际项目,演示下 深克隆和浅克隆的区别:

浅克隆:源数据与克隆数据一起改变

   

现在我们克隆数据的时候改成 深克隆,其他的不变

深克隆:源数据没有随克隆数据一起改变

   

  从上面可以看到,我使用了JSON.stringify+JSON.parse 进行深克隆,这能满足很大一部分开发需求了,当然,深克隆的方法还有很多,比如:递归、 jQuery中的 $.extend、slice(0)、object.assign、for循环遍历赋值、new Object() 等都是可以的
 

开发过程的记录,若有不恰当之处,欢迎指正!

Logo

前往低代码交流专区

更多推荐