当前位置: 首页 > article >正文

vue 深拷贝和浅拷贝的区别

浅拷贝

浅拷贝是指创建一个新对象,这个新对象有着原始对象属性值的拷贝。但是,如果属性是引用类型(比如对象或数组),那么拷贝的是内存地址,而不是对象本身。因此,如果修改了其中一个对象的引用类型属性,浅拷贝得到的对象也会受到影响,因为它们实际上指向的是同一个对象。

深拷贝

深拷贝是指将一个对象从内存中完整地拷贝一份出来,新对象在堆内存中开辟一个新的区域存放,因此改变新对象不会影响原对象。深拷贝会递归地拷贝对象的所有层级,包括嵌套对象和数组。

简单来说,给一个对象赋值的时候浅拷贝会影响拷贝和被拷贝的数据。如果使用的浅拷贝,并且后续要修改被赋值的对象,则会影响原对象,这个时候我们需要用深拷贝。

实现深拷贝的方法:

  1. 使用JSON.parse(JSON.stringify(obj)):这是最简单的方法,但有一些限制。比如,它无法拷贝函数、正则表达式等特殊类型的数据,也无法处理循环引用的情况。
  2. 使用递归:递归方法可以拷贝包括函数、正则表达式等特殊类型的数据在内的所有类型的数据。递归的基本思想是,对于对象中的每一个属性,如果它是一个对象或数组,就递归地调用深拷贝函数来拷贝它;否则,就直接拷贝它的值。
  3. 使用第三方库:比如lodash库提供了深拷贝的方法,可以方便地实现深拷贝。但是,使用第三方库会增加项目的体积,因此需要根据实际情况进行选择。

http://www.kler.cn/news/342743.html

相关文章:

  • kafka和zookeeper单机部署
  • 制作一个流水灯,控制发光二极管由上至下再由下至上反复循环点亮显示,每次点亮一个发光二级管(Proteus 与Keil uVision联合仿真)
  • 控制台java原生工具打包jar文件
  • 51c自动驾驶~合集3
  • 模块化沙箱的功能特点
  • 数据结构之——树形结构
  • 多线程实践(一)——# 基于多线程实现的并发服务器
  • 计算机毕业设计 基于Python的豆果美食推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • Python知识点:基于Python工具,如何使用PyTorch进行图像分类
  • 仿IOS桌面悬浮球(支持拖拽、自动吸附、自动改变透明度与点击、兼容PC端与移动端)
  • Java项目: 基于SpringBoot+mybatis+maven+vue健身房管理系统(含源码+数据库+毕业论文)
  • 查询数据库绘制历史曲线
  • C++ socket编程(1)
  • 你知道C++多少——栈和队列
  • Pr 视频效果:元数据和时间码刻录
  • 数据仓库拉链表
  • 7.并发编程之并发安全问题
  • 【Linux】Linux 环境变量中 LOGNAME 和 USER 有什么本质区别
  • 通义灵码-----阿里巴巴推出的 AI 编程助手,一站式安装使用教程。 我自己就是在用,感觉写代码会高效很多
  • 基于STM32的智能门锁