深拷贝与浅拷贝

本文详细介绍了深拷贝和浅拷贝的概念,解释了为什么需要使用深拷贝,并深入探讨了值类型与引用类型的区别。接着,通过内存模型的解释,阐述了深拷贝在处理复杂数据类型时的重要性。文章列举了实现深拷贝的各种方法,包括递归、JSON.parse/stringify、Object.assign以及扩展运算符,并特别指出这些方法在处理多层嵌套对象时的局限性。最后,提出了实现深拷贝的解决方案。
摘要由CSDN通过智能技术生成

1. 什么是深拷贝,浅拷贝

  • 深拷贝复制变量值,对于非基本类型的变量,则递归至基本类型变量后,再复制。 深拷贝后的对象与原来的对象是完全隔离的,互不影响, 对一个对象的修改并不会影响另一个对象。
  • 深拷贝和浅拷贝是针对复杂数据类型来说的,浅拷贝只拷贝一层,而深拷贝是层层拷贝。
  • 浅拷贝: 将原对象或原数组的引用直接赋给新对象,新数组,新对象只是对原对象的一个引用
  • 深拷贝: 创建一个新的对象和数组,将原对象的各项属性的“值”(数组的所有元素)拷贝过来,是“值”而不是“引用”

2. 为什么要使用深拷贝?

在改变新的数组(对象)的时候,不改变原数组(对象)

3.理解值类型与引用类型

值类型:number,string,boolean,undefined,null ,symbol(简单数据类型,每次赋值是)

第1步a=100;

第2步b=a;

第2步a=200;

 

引用类型:对象,函数(复杂数据类型,每次赋值是指向变量内存地址)

第1步a=内存地址1;

第2步b=a;

第3步a={a:21};//b等于21

4.内存模型

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值