克隆JS对象的三个实用方法

来源:互联网 发布:国家大数据行动计划 编辑:程序博客网 时间:2024/04/30 11:12

第一种:

function clone(obj){  var o;  switch(typeof obj){  case 'undefined': break;  case 'string'   : o = obj + '';break;  case 'number'   : o = obj - 0;break;  case 'boolean'  : o = obj;break;  case 'object'   :  if(obj === null){  o = null;  }else{  if(obj instanceof Array){  o = [];  for(var i = 0, len = obj.length; i < len; i++){  o.push(clone(obj[i]));  }  }else{  o = {};  for(var k in obj){  o[k] = clone(obj[k]);  }  }  }  break;  default:          o = obj;break;  }  return o;     }

第二种:

function clone2(obj){  var o, obj;  if (obj.constructor == Object){  o = new obj.constructor();   }else{  o = new obj.constructor(obj.valueOf());   }  for(var key in obj){  if ( o[key] != obj[key] ){   if ( typeof(obj[key]) == 'object' ){   o[key] = clone2(obj[key]);  }else{  o[key] = obj[key];  }  }  }  o.toString = obj.toString;  o.valueOf = obj.valueOf;  return o;  }  

第三种:

function clone3(obj){  function Clone(){}  Clone.prototype = obj;  var o = new Clone();  for(var a in o){  if(typeof o[a] == "object") {  o[a] = clone3(o[a]);  }  }  return o;  }  


0 0
原创粉丝点击