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