javascript深複製

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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章