码迷,mamicode.com
首页 > 其他好文 > 详细

对象引用(深、浅拷贝)

时间:2015-08-07 13:07:56      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

//这个存在引用关系
            var a=[1,2,3];
            var b=a;
            b.push(4);
            alert(b);//1,2,3,4
            alert(a);//1,2,3,4
            //这个就不存在引用关系
            //b重新赋值了就会重开一个地址
            var a=[1,2,3];
            var b=a;
            b=[1,2,3,4];
            alert(b);//1,2,3,4
            alert(a);//1,2,3
            
            var obj1={a:10};
            var obj2=obj1;
            obj2.a=20;
            alert(obj1.a);//20;
            
            var obj1={
                a:10
            };
            function copy(obj){//浅拷贝
                var newOjb={};
                for(var attr in obj){
                    newOjb[attr]=obj[attr];
                }
                return newOjb;
            }
            
//如果上面是var obj1={a:{b:10}}就要进行深入的查找 function deepCopy(obj){//深拷贝 var newOjb={}; if(typeof obj1 !="object"){//终止条件 return obj1;//返回最初的10 } for(var attr in obj){ newOjb[attr]=deepCopy(obj1[attr]);//递归 } return newOjb; } var obj2=copy(obj); obj2.a=20; alert(obj1.a)//10

 

对象引用(深、浅拷贝)

标签:

原文地址:http://www.cnblogs.com/yanwen2015/p/4710375.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!