Javascript中的浅拷贝和深拷贝


本文示例源代码或素材下载

  一、浅拷贝:

  如果是值类型,则拷贝值;如果是引用类型,则拷贝引用地址。

Object.prototype.shallowClone=function(){
  varobj=newObject;
  for(varpropertyinthis){
    obj[property]=this[property];
  }
  returnobj;
}

  二、深拷贝:

  值类型和引用类型都是重新拷贝。

functiondeepClone(object){
  if(object==null)returnnull;
  if(("numberbooleanstringundefined").indexOf((typeofobject).toLowerCase())>=0)
    returnobject;//值类型直接返回
  if(objectinstanceofArray){
    varnewArray=[];
    for(vari=0;i<object.length;i++){
      newArray.push(deepClone(object[i]));
    }
    returnnewArray;
  }
  varobj=newObject();
  for(varpropertyinobject){
    obj[property]=deepClone(object[property]);
  }
  returnobj;
}


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3