JavaScript 深克隆

深克隆
function judgeType(arg){//判断js数据类型
   return Object.prototype.toString.call(arg).slice(8,-1);
}

function deepCloneNick(obj){//深克隆
    var result,oClass=judgeType(obj);
    //确定result的类型
    if(oClass==="Object"){
        result={};
    }else if(oClass==="Array"){
        result=[];
    }else{
        return obj;
    }
    for(var key in obj){
        var copy=obj[key];
        if(judgeType(copy)==="Object"||"Array"){
            //result[key]=deepCloneNick(copy);//递归调用 避免函数名改变 改成下面一句
            result[key]=arguments.callee(copy);
        }else{
            result[key]=obj[key];
        }
    }
    return result;
}
console.log(deepCloneNick({a:[1,2],b:3}));
console.log(deepCloneNick([{a:'a'},2]));

  

posted @ 2016-10-21 10:46  最骚的就是你  阅读(234)  评论(0编辑  收藏  举报