深度克隆一个对象的方法

/*克隆一个对象*/

方法一、
Object.prototype.deepClone=function(){
  var buf;
  if (this instanceof Array) {
    buf = []; //创建一个空的数组
    var i = this.length;
    while (i--) {
      buf[i] = clone(this[i]);
    }
    return buf;
  }else if (this instanceof Object){
    buf = {}; //创建一个空对象
    for (var k in this) { //为这个对象添加新的属性
      buf[k] = deepClone(this[k]);
    }
    return buf;
  }else{
    return Obj;
  }
}

方法二、

Object.prototype.deepClone=function(){

  var obj=this.constructor=='Array'?[],{};

  //var obj=(this instanceof Object)?[],{};

  for(var key in this){

    obj[key]=typeof(this[key])=='Object'?this[key].deepClone(),this[key];

  }

  return obj;

}

方法三、

Object.prototype.deepClone=function() { 
    function cloneObj(){}
    cloneObj.prototype=this;     
  var obj=new cloneObj();  
  for(var o in obj){
    if(typeof(obj[o])=="object")
    obj[o]=obj[o].deepClone();
    }  
  return obj;

原文地址:https://www.cnblogs.com/cdwp8/p/4040017.html