手写深拷贝

139 阅读1分钟
    var obj={
        id:1,
        name:'andy',
        age:18,
        msg:{
            sing:123
        },
        color:['pink','red']
    };
    var o={};
    function deepCopy(newobj,oldobj) {
        for(var k in oldobj){
            if(oldobj[k] instanceof Array){
                newobj[k]=[];
                deepCopy(newobj[k],oldobj[k])
            }
            else if(oldobj[k] instanceof Object){
                newobj[k]={};
                deepCopy(newobj[k],oldobj[k])
            }else{
                newobj[k]=oldobj[k];
            }
        }
    }
    deepCopy(o,obj);
    console.log(o);

因为数组也是对象。所以先判断是否为数组,后判断是否为对象。