如何深度克隆对象

function clone(obj){
    if(typeof obj!='object'){
        return obj;    
    }
    if(obj instanceof Array){
        var arr=[];
        for(var i=0; i<obj.length; i++){
            arr[i]=clone(obj[i]);
        }
        return arr;
    }else if(obj.constructor==Object){
        var json={};
        for(var name in obj){
            json[name]=clone(obj[name]);
        }
        return json;
    }else if(obj instanceof HTMLElement){
        return obj.cloneNode(true);
    }else{ //oDate reg Image
        return new obj.constructor(obj.valueOf());
    }
}
var json={a:1,b:[1,{cc:90,kk:80},3],c:3};
var json2=clone(json);
json2.b[1].cc='00';
console.log(json.b[1].cc);        //90
console.log(json2.b[1].cc);        //00
posted @ 2015-10-28 12:40  BigPanda  阅读(206)  评论(0编辑  收藏  举报