深克隆与浅克隆的区别

本文探讨了JavaScript中的深克隆和浅克隆概念。浅克隆仅复制对象的第一层属性,导致两个对象共享同一内存地址,因此一处修改会影响另一处。深克隆则通过递归复制确保新对象与原对象独立,修改其中一个对象不会影响另一个。
摘要由CSDN通过智能技术生成

深克隆与浅克隆之间的区别

深克隆:用递归复制了对象的所有层级
浅克隆:浅复制只复制一层对象的属性

浅克隆

浅克隆是指在克隆对象时,对于基本数据类型的变量会重新复制一份,而对于引用类型的变量只是对引用进行克隆。就是将栈中的值复制一份给新的变量,因为浅复制只会将对象的各个属性进行依次复制,并不会进行递归复制,而 JavaScript 存储对象都是存地址的,所以浅复制会导致两个对象指向都是同一个地址,一个发生改变另外一个也发生改变。
在这里插入图片描述
在这里插入图片描述
看一下上面的例子,定义了一个arr数组,再将arr的值赋值给Arr,输出Arr,得出的值是arr的值,再通过Arr使用数组的方法添加进了一个数字,结果arr和Arr两个都输出是同一个数组。简单的来说,也就是定义一个Array数组名字叫arr,然后将arr的值复制一份给Arr,这里Arr和arr两个数组指向的地址都是同一个Array数组,只要Arr和arr两个数组中一个改变,A让人和arr两个数组都会改变。


深克隆

深克隆本质上是创造一个完全一样的对象,但是两个对象的引用地址完全不同,也就是不同与浅克隆,一个对象的改变,另外一个对象并不会发生改变。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值