Vue之监测数据的原理(对象)

大家有没有想过,为什么vue可以监测到数据发生改变?其实底层借助了Object.defineProperty,底层有一个Observer的构造函数
让我为大家简单的介绍一下吧!
我用对象为大家演示一下

    const vm = new Vue({el: "#app",data: {obj: {a: 1,b: 2}}})console.log(vm._data);

在这里插入图片描述
我们有没有办法,我们修改了数据,控制台提示我们修改了这个数据

我们不借助vue来实现一下吧!

    let data = {a: 1,b: 2}// 创建一个监测data的实例化对象let obs = new Observer(data)// 准备一个vm实例对象let vm = {}vm._data = data = obsfunction Observer(obj) {// 汇总成一个数组let keys = Object.keys(obj)keys.forEach(k => {// this 指向实例化对象上Object.defineProperty(this, k, {get() {return obj[k]},set(val) {obj[k] = valconsole.log(k + "被修改了");}})})}

这是不完善的,在vue的底层还有功能这里没有实现,就比如vue可以直接vm.a = ?
,还有就是更深层次的监测,需要用到递归,日后为大家带来更有意思的代码

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

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

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

相关文章

Python列表操作函数

在Python中,列表(list)是一种可变的数据类型,它包含一系列有序的元素。Python提供了一系列内置的函数和方法来操作列表。以下是一些常用的Python列表操作函数和方法: 列表方法 append(x) 将元素x添加到列表的末尾。 …

文献速递:帕金森的疾病分享--多模态机器学习预测帕金森病

文献速递:帕金森的疾病分享–多模态机器学习预测帕金森病 Title 题目 Multi-modality machine learning predicting Parkinson’s disease 多模态机器学习预测帕金森病 01 文献速递介绍 对于渐进性神经退行性疾病,早期和准确的诊断是有效开发和使…

Linux按键输入实验-对按键驱动进行测试

一. 简介 前面学习在设备树文件中创建按键的设备节点,并实现对按键驱动代码的编写,文章地址如下:Linux按键输入实验-创建按键的设备节点-CSDN博客Linux按键输入实验-按键的字符设备驱动代码框架-CSDN博客Linux按键输入实验-按键的GPIO初始化-CSDN博客 本文对所实现的按键驱…

【精品】集合list去重

示例一&#xff1a;对于简单类型&#xff0c;比如String public static void main(String[] args) {List<String> list new ArrayList< >();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add(…

网络工程师必备的网络端口大全(建议收藏)

端口是一种数字标识&#xff0c;用于在计算机网络中进行通信&#xff0c;你完全可以把端口简单的理解为是计算机和外界通讯交流的出口。但在网络技术中&#xff0c;端口一般有两种含义&#xff1a; &#xff08;1&#xff09;硬件设备中的端口 如交换机、路由器中用于链接其他…

用stream流将list转为map

用stream流将list转为map 1、将list转为Map<Long, List> 按照spaceId分组&#xff0c;spaceId相同的为一组数据&#xff1a; List<BasEvaluationPriceResultDto> list new ArrayList(); Map<Long, List<BasEvaluationPriceResultDto>> priceResult…

“金三银四”招聘季,大厂争招鸿蒙人才

在金三银四的招聘季中&#xff0c;各大知名互联网企业纷纷加入了对鸿蒙人才的争夺战。近日&#xff0c;包括淘宝、京东、得物等在内的知名APP均宣布启动鸿蒙星河版原生应用开发计划。这一举措不仅彰显了鸿蒙生态系统的迅猛发展&#xff0c;还催生了人才市场的繁荣景象。据数据显…

遥感影像处理(ENVI+ChatGPT+python+ GEE)处理高光谱及多光谱遥感数据

遥感技术主要通过卫星和飞机从远处观察和测量我们的环境&#xff0c;是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型&#xff0c;在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用&#xff0c;人工智能…

vue3学习 【4】ref和reactive的使用并于ts结合

使用ref声明一个响应式对象并使用 <script lang"ts" setup> import { ref } from vue; const message ref("HelloWorld") message.value"被修改了啊~~" </script> <template>{{ message }} </template>ref() 接收参数…

Vue——携带参数跳转路由

Vue学习之——跳转路由 前情回顾 当我们进行点击修改时&#xff0c;会进行跳转到修改页面&#xff0c;为了完成回显数据&#xff08;根据对应id查找&#xff09;&#xff0c;我们需要携带对应选择中的id跳转到修改页面&#xff0c;让其进行查找回显 学习useRoute和useRoute…

webstorm2023.3.4安装与破解

WebStorm安装步骤 打开JetBrains官方网站&#xff08;https://www.jetbrains.com/webstorm/&#xff09; 运行.exe 选择安装路径 第一个意思是是否创建桌面快捷方式&#xff0c;可根据需要选择&#xff1b;第二个.js .css .html勾选后之后js css html文件默认会用webstor…

AI Agent

目录 一、什么是Agent 二、什么是MetaGPT【多智能体框架介绍】 三、MetaGPT的背景 一、什么是Agent 智能体 LLM观察思考行动记忆 Agent&#xff08;智能体&#xff09; 一个设置了一些目标或任务&#xff0c;可以迭代运行的大型语言模型。这与大型语言模型&#xff08;LLM&am…

985机械研一转码,java还是c++?

985机械研一转码&#xff0c;java还是c&#xff1f; 在开始前我分享下我的经历&#xff0c;我刚入行时遇到一个好公司和师父&#xff0c;给了我机会&#xff0c;一年时间从3k薪资涨到18k的&#xff0c; 我师父给了一些 电气工程师学习方法和资料&#xff0c;让我不断提升自己&…

一键下载电路(for STM32 and mcuisp)

一键下载电路 1. STM32 一键下载电路2. 烧录软件&#xff1a;mcuisp和FlyMcu下载3. 遇到问题 1. STM32 一键下载电路 博文连接 2. 烧录软件&#xff1a;mcuisp和FlyMcu下载 mcuisp和FlyMcu下载 3. 遇到问题 按如上博文电路设计&#xff0c;上电发现程序没有进入 main() 函…

【OpenGL的着色器03】内置变量(gl_Position等)

目录 一、说明 二、着色器的变量 2.1 着色器变量 2.2 着色器内置变量 三、最常见内置变量使用范例 3.1 常见着色器变量 3.2 示例1&#xff1a; gl_PointSize 3.3 示例2&#xff1a;gl_Position 3.4 gl_FragColor 3.5 渲染点片元坐标gl_PointCoord 3.6 gl_PointCoo…

【PyTorch][chapter 20][李宏毅深度学习]【无监督学习][ GAN]【实战】

前言 本篇主要是结合手写数字例子,结合PyTorch 介绍一下Gan 实战 第一轮训练效果 第20轮训练效果,已经可以生成数字了 68 轮 目录&#xff1a; 谷歌云服务器&#xff08;Google Colab&#xff09; 整体训练流程 Python 代码 一 谷歌云服务器&#xff08;Google Colab&…

Linux学习-字符串数组和字符串

目录 使用场景 字符型数组定义&#xff1a; 初始化 数组储存 打印 字符型数组常见函数 常见操作 strcpy&#xff1a;字符串拷贝 strcat&#xff08;str1&#xff0c;str2&#xff09;字符串拼接 strcmp&#xff1a;字符串比较 注意&#xff1a; 二维字符型数…

Open CASCADE学习|曲线曲面连续性

1、曲线的连续性 曲线的连续性是三维建模、动画设计等领域中非常重要的一个概念&#xff0c;它涉及到曲线在不同点之间的连接方式和光滑程度。下面将详细介绍曲线的连续性&#xff0c;包括C连续性和G连续性。 1.1C连续性&#xff08;参数连续性&#xff09; C连续性是指曲线…

使用MyBatisPlus实现向数据库中存储List类型的数据

使用MyBatisPlus实现向数据库中存储List类型的数据 问题描述 建表时&#xff0c;表中的这五个字段为json类型 但是在入库的时候既不能写入数据&#xff0c;也不能查询出数据。 解决方案&#xff1a; 1.首先明确&#xff0c;数据存入的时候是经过了数据类型转化&#xff0c…

中国电子学会2020年06月真题C语言软件编程等级考试三级(含详细解析答案)

中国电子学会考评中心历届真题&#xff08;含解析答案&#xff09; C语言软件编程等级考试三级 2020年06月 编程题五道 总分:100分一、最接近的分数&#xff08;20分&#xff09; 分母不超过N且小于A/B的最大最简分数是多少? 时间限制: 1000ms 内存限制: 65536kb 输入…