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

vue利用深拷贝解决修改不能取消的问题

vue利用深拷贝解决修改不能取消的问题

在对某数据进行修改时考虑还需要进行“确认”、“取消”操作,那么在取消时就需要返回保留的数据内容,那么如何将原有数据保留一份则是关键性问题。

  • 显然修改值不能直接进行原值的赋值操作,因为这样无法取消回退
  • 如果采用浅拷贝,那么浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存,那么数据还是会出现问题
  • 需要采用深拷贝的形式进行数据的复制
    • JSON.parse(JSON.stringify(obj))实现深拷贝其实会存在很多的问题
      • 如果obj里面有时间对象,则JSON.stringify后再JSON.parse的结果,时间将只是字符串的形式,而不是时间对象
      • 如果obj里有RegExp、Error对象,则序列化的结果将只得到空对象
      • 如果obj里有函数,undefined,则序列化的结果会把函数或 undefined丢失
      • 如果obj里有NaN、Infinity和-Infinity,则序列化的结果会变成null
      • JSON.stringify()只能序列化对象的可枚举的自有属性,例如 如果obj中的对象是有构造函数生成的, 则使用JSON.parse(JSON.stringify(obj))深拷贝后,会丢弃对象的constructor
      • 如果对象中存在循环引用的情况也无法正确实现深拷贝
    • 使用lodash的cloneDeep进行数据的深拷贝
http://www.lryc.cn/news/267475.html

相关文章:

  • MATLAB - 使用 YOLO 和基于 PCA 的目标检测,对 UR5e 的半结构化智能垃圾箱拣选进行 Gazebo 仿真
  • 个性化定制的知识付费小程序,为用户提供个性化的知识服务,知识付费saas租户平台
  • 基于flask和echarts的新冠疫情实时监控系统源码+数据库,后端基于python的flask框架,前端主要是echarts
  • 总结js中遍历对象属性的方法
  • 编写fastapi接口服务
  • RasaGPT对话系统的工作原理
  • C++设计模式 #7 工厂方法(Factory Method)
  • 信息网络协议基础-接入网技术
  • springboot 自动装配原理
  • 前端---表格标签
  • 【软件工程】可执行文件和数据分离
  • Linux dirs命令
  • 有什么好用的C/C++源代码混淆工具?
  • iOS设备信息详解
  • 如何使用支付宝沙箱环境支付并公网调用sdk创建支付单服务
  • [EFI]Dell Latitude-7400电脑 Hackintosh 黑苹果efi引导文件
  • 用芯片SIC8833可开发电子秤方案
  • 【Qt-QFile-QDir】
  • 设计模式之-单列设计模式,5种单例设计模式使用场景以及它们的优缺点
  • Android 13 - Media框架(25)- OMXNodeInstance(二)
  • 生物系统学中的进化树构建和分析R工具包V.PhyloMaker2的介绍和详细使用
  • XStream 反序列化漏洞 CVE-2021-39144 已亲自复现
  • 深入剖析LinkedList:揭秘底层原理
  • 计算机网络复习-OSI TCP/IP 物理层
  • 虚拟机服务器中了lockbit2.0/3.0勒索病毒怎么处理,数据恢复应对步骤
  • 【MATLAB】 RGB和YCbCr互转
  • 【线性代数】决定张成空间的最少向量线性无关吗?
  • 暴力破解(Pikachu)
  • 如何使用CMake查看opencv封装好的函数
  • 微盛·企微管家:用户运营API集成,电商无代码解决方案