首页 > 代码库 > js --- 深复制,浅复制

js --- 深复制,浅复制

 1 //浅复制 2 var obj={   3     a:{   4         son1:‘aa‘,  //obj对象里的a也是个对象   5         son2:‘bb‘   6     },   7     b:20   8 };   9   10 function copy(obj){  11     var newobj={};  12     for(arr in obj)  13     {  14         newobj[arr]=obj[arr]  15     }  16     return newobj;  17 }  18   19 obj2=copy(obj);  20 alert(obj2.a.son1);//成功复制出obj的a  21 obj.a.son1=555;  //更改了obj的a.son2  22 alert(obj2.a.son1);//obj2的a.son1也随之改变  
//深复制var obj={          a:{aa:10},//浅拷贝解决不了对象中的对象          b:11      };      function deepcopy(obj){                    if(typeof obj!=‘object‘) //检验是否彻底          {              return obj;          }            var newobj={};            for(var attr in obj)          {              newobj[attr]=deepcopy(obj[attr]); //递归 (核心代码)          }          return newobj;      }      var obj2=deepcopy(obj);      alert(obj.a.aa);//10      alert(obj2.a.aa);//10 成功复制深层对象aa      obj2.a.aa=22;  //改变obj2的a的aa      alert(obj2.a.aa);//  改变      alert(obj.a.aa);//10  不变  

 

js --- 深复制,浅复制