JavaScript--对象的引用和复制(深浅拷贝)

对象的引用和复制

原始类型的复制:

let a = "你好";
let b = a;

这个时候,,我们就有了两个独立的变量"你好",这就好比克隆羊一样,它们都用有自己的身体,一直羊死翘翘了,也不会影响另一只羊。

而对象的克隆就不是这样,对象的克隆,并不是真正意义上的克隆。赋值的对象变量存储的不是对象本身,而是该对象"在内存中的地址",是该对象的"引用"。当复制该对象的时候,只是引用被复制,而该对象并没有被复制,这就好比分身,他们都指向同一个本体,如果分身受到伤害,本体也会受到伤害,本体受到伤害,其他的分身则会受到影响。

let a = {};
let b = a; //直接复制引用
console.log(a==b); 
console.log(a===b); // 都为true

从上面的例子可以看出,如果直接复制引用的话,两者是完全相同的。如果是创建两个空的对象:

let a = {};
let b = {};
console.log( a == b ); //返回false

两者虽然都是空对象,但是返回结果为false,则可以证明,两者引用地址不相同。

浅拷贝

浅拷贝并不会拷贝到对象中的子对象:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值