深浅拷贝的区别和实现

深浅拷贝的区别和实现

浅拷贝:拷贝一个变量的时候,复制了栈内存,没有复制堆内存。就是浅拷贝出来的变量拷贝的是指针还是指向同一块内存。

深拷贝:拷贝一个变量的时候,复制了栈内存,同时也复制了堆内存。就是深拷贝出来的变量和原来的变量完全分离,互不影响。

浅拷贝的实现:

  1. Object.assign()
  2. 利用展开运算符…
  3. 自己封装一个for…in函数

深拷贝的实现:

  1. 应用JSON.parse()JSON.Stringify()的方法
    JSON.Stringify()是将一个对象转换为JSON类型
    JSON.parse()是将一个JSON类型的变量转换为对象
    连起来使用就是 JSON.parse( JSON.Stringify())

  2. for…in加递归

之所以会出现了深拷贝和浅拷贝,究其根本是因为JS种的变量包含了不同类型的数据值:基本类型和引用类型;同时其中变量的存储方式也不用Object属于堆内存的储存方式;并且JS的值的传递方式如值传递和址传递的会出现不同,所以才会出现这一系列的问题,因此才会使用深拷贝和浅拷贝来解决这些问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值