vue实现深拷贝的方法

news2024/10/5 16:25:03

 

在 vue中,深拷贝是一个很有用的功能,在不改变原来对象状态的情况下,进行对象的复制。 但要实现深拷贝,需要两个对象具有相同的属性。如果两个对象不同,深拷贝也不能实现。 1.我们将变量A的属性赋给变量B,但要确保B的属性也被赋给了变量A 5.我们将属性E和属性D同时赋值给对象 11.我们将对象E和F一起进行深拷贝,但要确保E和F都被赋值

  • 一、我们将变量A的属性赋给变量B,但要确保B的属性也被赋给了变量A

    vue中,如果两个对象的属性相同,那么,当我们将其进行深拷贝的时候,只会复制原来对象的属性。 例如,我们可以使用如下代码来实现深拷贝: 当我们将一个变量A的属性赋给一个变量B时,我们不会进行深拷贝。因为我们只是将A的属性赋给B,B不会再将其赋给A。 但如果我们想要进行深拷贝的话,需要注意以下几点: 1.当我们修改一个对象的属性时,必须在对象的生命周期内进行。例如,当我们修改了一个变量的值时,那么该变量就会在它的生命周期内发生变化。 3.如果对象是一个 null属性时,它会在对象生命周期内发生变化。 5.如果对象是一个空属性或者是一个字符串类型时(如: void*),则不能进行深拷贝。 6.如果对同一个变量赋值后再修改它的值(例如:将两个变量赋值后再修改它们之间的值),则需要重新对这两个变量进行赋值。例如:当我们对同一个变量赋值后再修改它的值时,我们需要将新增加的数据赋给之前改变了它属性(例如: void*)的变量。 7.当对象是指针类型时,不能进行深拷贝。例如:当我们将指针类型属性(例如: void*)赋给指针类型对象时(例如: void*)是不能进行深拷贝的。 9.当我们对同一个指针类型和变量进行深拷贝时,该指针类型和变量在两个对象中都必须相同。 11.当我们对同一个对象属性进行深拷贝时(例如: void*)需要确保它不能改变原来对象属性(例如: void*)的值。

  • 二、我们将属性E和属性D同时赋值给对象

    Vue中实现深拷贝,我们要知道: 1. Vue中的数据对象是可以被多次使用的,因此,在同一个 vue项目中,只要数据对象能够被多次使用,就可以实现深拷贝。 2. Vue中的数据对象是由vue-cli来管理的,因此我们需要注意: 3. Vue中的数据对象不能被多次引用。 4. Vue中的数据对象不能被多次复制,如果需要多次复制,就要将对象进行拷贝。 5.在对数据进行修改时,要注意:修改后要检查是否符合预期。如果修改后不符合预期,就需要重新修改了。 6.在对数据进行修改时,如果需要改变值的数值,需要使用vue-cli来处理。 7.在使用深拷贝时,一定要注意:不能改变原来对象的值和属性。

    • 1、在同一个项目中,使用同一属性值对不同的对象进行复制

      如果我们使用vue-cli来管理数据对象,那么我们需要将不同的属性值添加到一个vue-cli中。 那么,怎么添加到同一个vue-cli中呢? 我们可以在同一个项目中使用相同的属性来对不同的对象进行复制。我们可以看到,在这个vue-cli中,我们有两个属性值: (1)属性E:属性E是一个新的对象,它是一个新的属性。 (2)属性D:属性D是一个老的对象,它已经存在了很多年,并且没有被修改过。 两个对象都有相同的属性,那么我们就可以将它们一起复制到同一个vue-cli中。 当我们对数据进行修改时,只需要对属性E进行修改即可。当我们在修改了两个数据时,需要分别检查是否符合预期。如果符合预期,就可以在vue-cli中直接对这两个数据对象进行引用,而不需要再使用其他的方法对它们进行引用。

    • 2、使用深拷贝

      使用深拷贝是通过对vue-cli中的参数进行拷贝来实现的,这里的参数可以是数组、对象、方法、属性等。 我们来看一下深拷贝的代码: 我们看到,这里使用了数组(string)和对象(object)进行深拷贝,这里我们首先对数组(string)和对象(object)进行了复制操作,然后在需要进行修改的地方,使用了vue-cli中的属性(value)来进行修改。 因为这里我们是对数组和对象分别进行复制操作,因此我们可以看到:

  • 三、我们将对象E和F一起进行深拷贝,但要确保E和F都被赋值

    1.如果想要把两个对象的属性都进行深拷贝,那么必须要有一个对象的属性被赋值给另外一个对象。 2.如果两个对象的属性不相同,那么可以使用 name属性,将 name属性赋给另外一个对象。 3.如果是要将一个对象的属性赋给另一个对象,那么可以使用 static关键字。 5.在 vue中,使用方法进行深拷贝的时候,需要注意: (1)如果属性B和变量A共享同一个对象,那么可以使用方法将变量A的属性赋值给变量B (3)在方法中定义一个新的类来代替原来的类,将两个方法的作用域进行区分。在新类中只会传递原类中的属性和方法,而不会传递新类中的属性和方法

以下是几种常用的 Vue 深拷贝代码:


1. 使用 JSON 序列化和反序列化
```javascript
const deepClone = obj => {
return JSON.parse(JSON.stringify(obj))
}
```
该方法使用 JSON 序列化和反序列化实现深拷贝,但是该方法有一些限制,例如无法拷贝函数、正则表达式等特殊类型的数据。
2. 使用递归实现深拷贝
```javascript
const deepClone = obj => {
if (obj === null) return null
if (typeof obj !== 'object') return obj
if (obj.constructor === Date) return new Date(obj)
if (obj.constructor === RegExp) return new RegExp(obj)
const newObj = new obj.constructor()
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = deepClone(obj[key])
}
}
return newObj
}
```
该方法使用递归实现深拷贝,可以拷贝函数、正则表达式等特殊类型的数据。
3. 使用 lodash 库的深拷贝方法
```javascript
import _ from 'lodash'
const deepClone = obj => {
return _.cloneDeep(obj)
}
```
该方法使用 lodash 库的深拷贝方法实现深拷贝,可以拷贝函数、正则表达式等特殊类型的数据。但是需要注意的是,使用第三方库会增加项目的体积。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/575574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot+java医院门诊挂号系统设计与实现ssm008

本课题的目标是使医院门诊信息管理清晰化,透明化,便于操作,易于管理。通过功能模块的优化组合实现不同的管理细节,使管理过程实现最大程度的自动化与信息化,并能自动对人工操作环节进行复查,使医院门诊挂号系统出错率降至最低。 主…

3、mqtt客户端演示(MQTT通信协议(mosquitto)发布订阅 C语言实现)

可订阅可发布模式 具体代码 客户端1代码&#xff1a;pub.c #include <stdio.h> #include <stdlib.h> #include <mosquitto.h> #include <string.h>#define HOST "localhost" #define PORT 1883 #define KEEP_ALIVE 60 #define MSG_MAX_S…

ChatGPT提示词工程进阶教学

ChatGPT提示词工程 1 两种大型语言模型LLM1.1 基础大模型&#xff08;base LLM&#xff09;1.2 指令调优大模型(Instruction Tuned LLM) 2 如何更清晰、具体地书写提示词2.1 在提示词中使用“定界符”2.2 向模型请求结构化的输出2.3 要求模型检查任务条件是否满足2.4 输入多范例…

uCOSii中的互斥信号量

uCOSii中的互斥信号量 一、互斥型信号量项管理 (MUTUAL EXCLUSION SEMAPHORE MANAGEMENT) OSMutexAccept() 无条件等待地获取互斥型信号量 OSMutexCreate() 建立并初始化一个互斥型信号量 OSMutexDel() 删除互斥型信号量 OSMutexPend() 等待一个互斥型信号量 OSMutexPost…

扬帆起航——Qt自定义控件介绍

文章目录 前言自定义控件的定义自定义控件的好处如何实现自定义控件实现没有自带的控件 如何使用自定义控件测试和优化常见的自定义控件总结 前言 Qt 提供了丰富的控件、工具和库&#xff0c;可以帮助开发人员快速创建现代化的跨平台应用程序。但是对于某些特殊的需求&#xf…

【数据结构】冒泡,快速,直接插入,归并,选择排序

&#x1f38a;专栏【数据结构】 &#x1f354;喜欢的诗句&#xff1a;更喜岷山千里雪 三军过后尽开颜。 &#x1f386;音乐分享【Dream It Possible】 大一同学小吉&#xff0c;欢迎并且感谢大家指出我的问题&#x1f970; 目录 &#x1f381;冒泡排序 &#x1f3f3;️‍&…

CentOS7.4安装OpenVPN

系统环境 [rootvpn ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) 一. 准备工作 [rootvpn ~]# yum -y install openssl-devel openssl pam pam-devel lzo lzo-devel pkcs11-helper pkcs11-helper-devel 二. 安装OpenVPN服务 1. 下载openvpn源码包 [r…

【计算机网络 - 第六章】链路层

目录 一、概述 1、数据链路层提供的服务&#xff1f; 二、差错检测 1、奇偶校验 2、循环冗余校验CRC 三、多路访问链路和协议 1、概述 &#xff08;1&#xff09;多路访问协议 2、信道划分协议 ① 频分多路复用FDM ② 时分多路复用TDM ③ 波分多路复用WDM ④ 码分…

更好看的国产蓝牙耳机,音质也没问题,哈氪零度青春版体验

夏天躲在空调房里戴着耳机听音乐、玩游戏是很多人的日常&#xff0c;这两年国产耳机做得越来越好了&#xff0c;设计也很有新意&#xff0c;像是我现在用的这款哈氪零度青春版&#xff0c;就采用了一种冰封造型设计&#xff0c;视觉效果很新颖&#xff0c;看起来很有立体感&…

【一个简单的前后端交互页面】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 客户端与服务器之间的通信流程 理解当前案例…

chatgpt赋能python:Python文件拆分技巧详解

Python 文件拆分技巧详解 随着数据量的不断增大&#xff0c;我们经常需要处理非常大的数据文件&#xff0c;这时候就需要用到文件拆分技巧。在Python中&#xff0c;文件拆分可以帮助我们提高数据处理的效率&#xff0c;这是一个非常实用的技巧。在本篇文章中&#xff0c;我们将…

奇巴布Feed流性能优化

01 项目背景 “爱奇艺奇巴布”是爱奇艺为0-8岁孩子和家长定制化设计的寓教于乐平台&#xff0c;为儿童量身打造精致的观看体验&#xff0c;精彩内容解锁寓教于乐新方式。为儿童提供优质动画内容的同时&#xff0c;我们更关注APP用户体验。在产品交互设计上我们立足儿童视角&…

抖音SEO矩阵系统开发分享及搭建流程

目录 产品功能亮点 产品介绍及开发背景 开发要求及实现流程 产品功能亮点 1. 支持多账号多平台一键 授权管理 2.支持矩阵视频批量剪辑&#xff0c;批量发布 3. 多平台关键词布局&#xff0c;提升企业及产品曝光 4. 评论区关键词自动回复&#xff0c;意向线索智能挖掘 5…

RTOS专栏(一) —— rt-thread简单介绍和qemu使用

本期主题&#xff1a; 简单介绍rt-thread介绍qemu和rt-thread怎么配合使用qemu的简单例子 rt-thread & qemu 1.rt-thread介绍2.qemu介绍3.搭建rt-thread和qemu开发环境4.简单例子 1.rt-thread介绍 RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff0…

《操作系统》期末主观题梳理

操作系统简答题 文章目录 操作系统简答题第一章第二章第三章第四章第五章第六章第七章第八章第九章 第一章 在计算机系统上配置OS(operating system, 操作系统)的目标是什么?作用主要表现在哪几个方面? 在计算机系统上配置OS, 主要目标是实现&#xff1a;方便性、有效性、可…

Error: Flash Download failed - Target DLL has been cancelled

文章目录 背景参考 背景 在使用keilv5进行STM32开发时&#xff0c;配置用JLink进行文件烧录&#xff0c;出现如下错误&#xff1a; 查阅资料&#xff0c;是因为Keil未识别烧录工具&#xff0c;需要进行下面的操作&#xff1a; 1.打开工程配置窗口&#xff0c;点开Debug选项卡…

并查集专题

⭐️前言⭐️ 本篇文章主要介绍与并查集相关的题目。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评论区留言 &#x1f349;博客中涉及源码及博主…

阿里「通义千问」内测详细使用体验

名人说&#xff1a;一花独放不是春&#xff0c;百花齐放花满园。——《增广贤文》 作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、简要介绍二、分类问题测试0️⃣自我介绍1️⃣生成内容2️⃣回答问题3️⃣对话协…

springboot+vue大学生租房系统(java项目源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的大学生租房系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

太稳了,支付系统就该这么设计

支付中心系统对内为各个业务线提供统一的支付、退款等服务&#xff0c;对外对接三方支付或银行服务实现资金的流转。如下图&#xff1a; 大部分公司基本都是这样的架构&#xff0c;主要有以下几方面的优点&#xff1a; 形成统一支付服务&#xff0c;降低业务线接入成本及重复研…