递归实现深层克隆

本文介绍了JavaScript中如何实现深度克隆,重点在于处理属性值为原始类型和引用类型的情况。通过遍历对象并检查属性值类型,对于引用类型进行递归复制,确保克隆对象与原始对象间的独立性。文中还探讨了浅层克隆的区别,当修改原始对象时,克隆对象不受影响。
摘要由CSDN通过智能技术生成

在整理前端面试问题的时候,遇到很多要求利用js实现深层克隆要求,因此特意回去翻看了资料,并将笔记和代码整理了一下。

关于深层克隆

深层克隆可以简单理解为:可以克隆第一级属性,如果某个属性又是一个内嵌的子对象,深克隆会进入子对象中,继续克隆内嵌子对象及其内容。

实现深层克隆的思路:
1、首先对需要克隆的对象进行遍历,判断里面属性值的类型
2、属性值的类型分为两种:原始值(string,number,null,undefine,boolean)和引用值(object,array)
3、如果遍历到的属性值为原始值,则直接进行拷贝
4、如果遍历到的属性值为引用值类型,则需要在目标对象的对应属性地方建立新的引用值类型,以原始引用值类型为模板,新建立的引用值为目标重复1,2,3步骤进行拷贝,从而实现深层拷贝。
下面给出代码实现过程:(附超详细注释)

function deepClone(origin,target){
   
            var target = target || {
   };
            toStr = Object.prototype.toString;
            arrStr = "[object.Array]";
            for (var key 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值