• 深复制,浅复制


     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  不变  
  • 相关阅读:
    Xaml下
    Xmal
    ItemTemplate
    spring aop
    Struts2
    jsp的标签库
    数据库连接池
    request初探
    kubectl 命令大全
    win10常见问题归总
  • 原文地址:https://www.cnblogs.com/zhanghuiyun/p/5726681.html
Copyright © 2020-2023  润新知