js深度复制方法总结

本文探讨了JavaScript中实现深度复制的各种方法,包括利用JSON的parse和stringify、递归、jQuery的extend以及考虑栈堆思想的自定义方法。同时,提到了lodash库的深克隆功能在生产环境中的广泛应用。在深入讲解过程中,强调了理解JS内存管理和深复制原理的重要性,特别是对函数、RegExp等特殊对象的处理和循环引用问题。
摘要由CSDN通过智能技术生成

想理解js深度复制,一定要理解JS的内存管理,我们知道JS拥有自动的垃圾回收机制,这样就使得很多前端开发人员不是很重视内存管理这一块。但是其实这一部分的内容对于理解JS中原型与原型链,闭包,递归都是非常有帮助的。
在JS中,每一个数据都需要一个内存空间。内存空间又被分为两种:栈内存(stock) 堆内存(heap)
关于原理,这篇博文讲的非常详细:
https://www.jianshu.com/p/2a3728cded4c?utm_campaign=maleskine&utm_content=note&utm_medium=reader_share&utm_source=weixin
下面是我总结的一些深度拷贝函数

1. 除了递归,我们还可以借用JSON对象的parse和stringify

function deepClone(obj){
   
    let _obj = JSON.stringify(obj),
        objClone = JSON.parse(_obj);
    return objClone
}    
let a=[0,1,[2,3],4],
    b=deepClone(a);
a[0]=1;
a[2][0]=1;
console.log(a,b);

这个方法虽然可以解决绝大部分是使用场景,但是却有很多坑.
1.他无法实现对函数 、RegExp等特殊对象的克隆;
2.会抛弃对象的constructor,所有的构造函数会指向Object;
3.对象有循环引用,会报错;

2. 递归(比较简单的一种,不是最好的)

function deepClone(obj){
   
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值