对象引用(深、浅拷贝)

//这个存在引用关系
            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

 

转载于:https://www.cnblogs.com/yanwen2015/p/4710375.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值