深度拷贝

//深度拷贝
//考虑引用值
var obj={
name:"abc",
age:123,
sex:"F"
card:['visa','[1,2]']
}
var obj1={

}
//遍历对象

function deepClone(target, origin) {
            var target=target||{};
            //容错处理以防如果外部没有传入的空对象,就自己创建一个新的空对象{},
            //若有的话就把旧target对象传给新创建的target
            var objStr = '[object Object]';
            var arrStr = '[object Array]';
            if (origin !== 'null') {
                for (var prop in origin) {
                    if (origin.hasOwnProperty(prop)){
                        if (typeof(origin[prop]) == 'object') {
                            console.log("aa");
                            if (Array.prototype.toString.call(origin[prop]) == objStr) {
                                target[prop] = {};
                            } else {
                                target[prop] = [];
                            }
                            deepClone(target[prop], origin[prop]);
                        } else {
                            target[prop] = origin[prop];
                        }         
                    }
                }
            }
             return target;//如果外部调用函数没有穿target复制对象情况,就返回一个复制好的对象
        }

//判断是否是自己的对象
//1.判断是否是原始值 typeof object
//2.判断是数组还是对象  instanceof tostring() constructor
//3.建立相应的数组对象
function deepClone(origin,target){
var target=target||{};
var toStr=Object.prototype.toString;
var objStr="[object Object]";
var arrStr="[object Array]";


for(var prop in origin){
if(origin.hasOwnProperty(prop)){
if(original[prop]!=='null '&& typeof(origin[prop])=='object'){
if(toStr.call(origin[prop]==arrStr)){
target[prop]=[];//给target的prop属性建立数组对象
}else{
target[prop]={};
}
deepClone(origin[prop],target[prop]);
}else{
target[prop]=origin[prop];
}
}

}

  return target;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值