克隆或者拷贝

克隆或者拷贝分为2种:浅度克隆(拷贝),深度克隆(拷贝);

浅度克隆:基本类型为值传递,对象仍为引用传递。

深度克隆:所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。

1
function cloneObject(obj){
  if(obj === null){
      return null;
  }else if(obj instanceof Array){
     var arr = [];
     for(var i = 0, ilen = obj.length; i < ilen; i+=1){
         arr[i] = obj[i];
     }
     return arr;
  }else if(obj instanceof Date || obj instanceof RegExp || obj instanceof Function){
       return obj;
  }else if(obj instanceof Object){
      var o = {};
      for(var i in obj){
          if(obj.hasOwnProperty(i)){
              o[i] = cloneObject(obj[i]);
           }
      }
      return o;
 }else{
     return obj;
 }
}