记录实现深拷贝递归的函数

本文探讨了JavaScript中数据类型的区分,特别是基本数据类型和引用类型。文章重点介绍了深拷贝的概念,提供了两种实现深拷贝的方法:JSON.parse(JSON.stringify())和递归函数,并解释了这两种方法的适用场景。通过实例解析,帮助读者理解如何在JavaScript中有效地进行对象的深拷贝操作。
摘要由CSDN通过智能技术生成

前言

js中数据类型分为基本数据类型(null,undefined,string,number,boolean)和引用类型(object);

基本数据类型是存在栈中,而引用类型是存在堆和栈中;我们不能直接操作对象的堆内存空间,只能按照引用进行访问

正文:

拷贝分为深拷贝和浅拷贝,深拷贝主要针对于引用数据类型,下面是我记录实现深拷贝的两种方法:

1).JSON.parse(JSON.stringify()) (针对普通类型)

2).递归函数 (针对函数)

//参数p为原对象
//参数c为原对象的类型,若原对象为数组,则传入c为[],若原对象是对象传入c为{},也可不传默认为{}
function deepCopy(p,c) {
    let c = c || {}
    for (let i in p) {
     if (typeof p[i] === 'object') {
       c[i] = (p[i].constructor === Array) ? [] : {}
       deepCopy(p[i], c[i]);
     } else {
        c[i] = p[i]
      }
     return c
   }
}

有不对的欢迎评论区指正交流~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值