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

简介: 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进行数据的深拷贝

相关文章
|
1天前
|
JavaScript
VUE里的find与filter使用与区别
VUE里的find与filter使用与区别
22 0
|
1天前
|
JavaScript
vue页面加载时同时请求两个接口
vue页面加载时同时请求两个接口
|
1天前
|
JavaScript
vue里样式不起作用的方法,可以通过deep穿透的方式
vue里样式不起作用的方法,可以通过deep穿透的方式
14 0
|
1天前
|
移动开发 JavaScript 应用服务中间件
vue打包部署问题
Vue项目`vue.config.js`中,`publicPath`设定为"/h5/party/pc/",在线环境基于打包后的`dist`目录,而非Linux的`/root`。Nginx代理配置位于`/usr/local/nginx/nginx-1.13.7/conf`,包含两个相关配置图。
vue打包部署问题
|
1天前
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
18 0
|
1天前
|
存储 JavaScript
Vue当前时间与接口返回时间的判断
Vue当前时间与接口返回时间的判断
14 0
|
1天前
|
JavaScript 前端开发
Vue生成Canvas二维码
Vue生成Canvas二维码
12 0
|
1天前
|
Web App开发 编解码 JavaScript
【Vue篇】Vue 项目下载、介绍(详细版)
【Vue篇】Vue 项目下载、介绍(详细版)
8 3
|
1天前
|
JavaScript
vue知识点
vue知识点
12 3
|
1天前
|
JavaScript
vue打印v-model 的值
vue打印v-model 的值