深拷贝和浅拷贝是什么?它们有什么区别?

目录

前言

一、JS 中的数据类型有哪些?

二、什么是浅拷贝?

三、什么是深拷贝?

总结


前言

本文主要介绍 Javascript 中的数据类型、深拷贝和浅拷贝的有关知识。作为初学者,这两个概念经常会混淆或难以理解,同时,这也是面试中的高频问题。希望看到本文能为你解惑。


一、JS 中的数据类型有哪些?

JS数据类型和存储区别

如上图所示,JS 中的数据类型主要分为两类:基本类型和引用类型。

两者在存储上存在一些区别:

  • 基本类型数据存储在中;
  • 引用类型数据存储在中,而其变量对应的引用地址则存储在中。

二、什么是浅拷贝?

仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅拷贝出来的对象也会相应的改变。

创建一个新对象,这个对象拷贝了原始对象的属性:

  • 如果属性是基本类型:拷贝的就是基本类型的
  • 如果属性是引用类型:拷贝的就是内存地址

所以如果其中一个对象改变了,就会影响另一个对象。 

三、什么是深拷贝?

在计算机中开辟一块新的内存地址用于存放复制的对象。

即将一个对象从内存中完整的拷贝一份出来,从对内存中开辟一个新的区域存放新对象,且修改新对象不会影响原对象。 


总结

深拷贝和浅拷贝最根本的区别在于是否真正获取了一个对象的复制实体,而不是引用。


如有侵权,请联系我删。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

修代码的勾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值