枯燥的js深度克隆

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);

猜你喜欢

转载自blog.csdn.net/weixin_51664705/article/details/113853084