zoukankan      html  css  js  c++  java
  • 深复制,浅复制

     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  不变  
  • 相关阅读:
    hdu5514 非2的次幂容斥原理
    「NOIP2015」斗地主
    「NOIP2009」靶形数独
    「CF521D」Shop
    「HNOI2015」菜肴制作
    「NOIP2011」观光公交
    「NOI2015」荷马史诗
    「JSOI2007」建筑抢修
    「CF161B」Discounts
    叠罗汉
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/5726681.html
Copyright © 2011-2022 走看看