枯燥的js深度克隆

本文探讨了JavaScript中实现对象深拷贝的方法,通过递归函数`deepClone`详细解析了如何复制包括函数、数值、数组和嵌套对象在内的复杂数据类型。该函数首先检查属性类型,然后对数组和对象进行特殊处理,确保原始对象和拷贝对象之间的独立性。
摘要由CSDN通过智能技术生成
var obj={
    a:function(){},
    b:123,
    card:['sdsd','sdasd']
}
var obj1={};
    function deepClone(origin,target){
        var target = target || {},
            toStr = Object.prototype.toString,//用于后面精确判断数组和对象
            arrStr = "[object Array]";//数组的判断结果
        for(var prop in origin){//遍历整个对象
            if(origin.hasOwnProperty(prop)){
                if(typeof(origin[prop])=='object'){//先粗略地分成object
                    if(toStr.call(origin[prop])==arrStr){//细分成数组和对象
                        target[prop] = [];
                    }else{
                        target[prop]={};
                    }
                    deepClone(origin[prop],target[prop]);//将里面的值再次传入函数。
                }else{
                    target[prop] = origin[prop];
                }
            }
           
        }
        return target;
    }
    deepClone(obj,obj1);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值