js的深拷贝,浅拷贝

一、浅拷贝

对基础数据类型的数据进行浅拷贝,会返回整个数据,此时你操作新数据不会影响到原数据。

常用的拷贝方式有解构。

 

 如果对复杂的数据类型进行浅拷贝,比如数据中既有基础数据类型又有引用数据类型,浅拷贝会返回第一层的基础数据类型,而其他类型返回的是内存栈中的存储地址,此时如果操作新数据中的第一层的基础数据类型不会影响到原数据,但是如果操作新数据中的引用数据类型,会引起原数据的改变。

 原因就是浅拷贝引用数据类型只会拷贝存储的地址,并不会开辟新的内存栈,无论在新数据还是原数据操作,都会引起两遍的引用数据类型的改变。

二、深拷贝

 深拷贝就是不管数据是基础数据类型还是引用数据类型都能在内存中开辟新的内存地址,进行过深拷贝过后的数据就相当于一个新的数据,操作拷贝过后的数据不会影响到原来的数据。深拷贝通常有两种方式,一种是JOSN的方法,一种是手搓递归函数进行拷贝。

 

 三、应用场景

1、 浅拷贝主要用于你需要拷贝的对象的数据结构只有基础数据类型,并且你不想改变原数据类型或者需要对比操作前后的数据。

2、深拷贝主要用于你想操作该数据,但是又不想影响到原数据的时候,就可以进行深拷贝。

三、总结

总的来说,浅拷贝就是只拷贝基础数据类型的数据,并且数据只有单一的一层,而深拷贝用于拷贝具有复杂的数据类型的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值