判断js数据类型和clone

判断返回js数据类型

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

clone

function deepCloneNick(obj){//深克隆
    var result;
    //确定result的类型
    if(judgeType(obj)==="Object"){
        result={};
    }else if(judgeType(obj)==="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;
}

  测试:

var obj={a:[1,2],b:3},arr=[{a:'a'},2];
    var obj1=deepCloneNick(obj),arr1=deepCloneNick(arr);
    console.log(obj);
    console.log(obj1);
    console.log(arr);
    console.log(arr1);

  

posted @ 2016-10-18 11:43  webNick  阅读(464)  评论(1编辑  收藏  举报
好东西!绝不藏私!乐于分享!涨知识、增内涵、共同进步……
Copyright ©2016 webNick
↑返回顶部