浅拷贝和深拷贝的区别(详解)

今天小编给你们讲讲浅拷贝跟深拷贝吧!
欢迎可爱的你们来看看,互相学习喔!
在这里插入图片描述

浅拷贝和深拷贝最根本的区别就是是否真正获取一个对象的复制实体,而不是引用;
简单来说浅拷贝就是一个改变,另一个也会变,只拷贝一层对象的属性。
深拷贝就是两个对象对应两个不同的地址,修改一个对象的属性,另一个不会改变。(文字多了就会不想看了,我们来展示代码吧)

浅拷贝还用代码来展示吗算了来一段吧哈哈
	var obj1={"name":"隔壁老王"};
    var obj2 = obj1;
        obj1.name ="隔壁老李";
    console.log("obj1",obj1);
    console.log("obj2",obj2);

一个改变另一个也会变
在这里插入图片描述
递归-深拷贝

var obj={
            "name":"隔壁老王",
            "age":13,
            "list":{"title":"新闻"}
        }
function deepCopy(obj){
      var copyobj={}    //创建新对象
          for( var key in obj ){
               if( obj.hasOwnProperty(key)==true ){   //判断对象自身是否存在属性
                  if( obj[key] instanceof Object ){   //判断属性值是不是对象
                      copyobj[key]=deepCopy(obj[key])   //是的话赋值
                  }else{
                      copyobj[key]=obj[key]    //是的话赋值
                  }
              }
          }
          return copyobj          //返回对象 
                    
}

      var obj2=deepCopy(obj)   //递归赋值新对象
      obj.list.title="娱乐"    //修改对象属性
      console.log('obj :>> ', obj);   //一个改变,另一个不会变
      console.log('obj2 :>> ', obj2);

展示效果
在这里插入图片描述
帮助到你们给小姐姐点赞评论喔~

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值