数据代理机制

目录

前言

Object.defineProperty()

语法

第三个参数配置项

数据代理机制的实现

MVVM分层思想


前言

本文介绍Vue的数据代理机制,也就是通过vue实例对象来代理data对象中的属性的操作

Object.defineProperty()

在介绍vue的数据代理机制前,我们需要先来了解一下Object.defineProperty()这个方法。这个方法是ES5新增的,其作用就是给对象新增属性,或者设置对象原有的属性。

语法

Object.defineProperty(给哪个对象新增属性,'新增的这个属性名叫啥',{给新增的属性设置相关的配置项key:value对})

例:

 let temp ={}Object.defineProperty(temp,"color",{value:"蓝色"})

在控制台直接打印

成功新增了color属性,查询到了新增的value值

第三个参数配置项

value 配置项:"给属性指定值",

writable 配置项:"设置该属性的值是否可以被修改true表示可以修改。false表示不能修改"

getter方法 配置项:"不需要手动调用,当读取属性值的时候,getter方法被自动调用"

                                (getter方法的返回值非常重要,这个返回值就代表这个属性它的值)

setter方法 配置项:"不需要手动调用,当修改属性值的时候,setter方法被自动调用"

                                    (setter方法上是有一个参数的,这个参数可以接收传过来的值)

当配置项当中有setter和getter的时候,value和writable配置项都不能存在

例:

如果不设置writable配置项

设置了writable配置项

设置getter和setter方法

 let temp ={}Object.defineProperty(temp,"color",{// value:"蓝色",// writable:'true'get:function(){console.log("getter执行了");},set:function(){console.log("setter执行了");}})

let temp ={}Object.defineProperty(temp,"color",{// value:"蓝色",// writable:'true'get:function(){console.log("getter执行了");return "灰色"},set:function(val){console.log("setter执行了");let temp = val}})

getter方法return返回一个灰色,setter形参接收return过来的数据

数据代理机制的实现

通过getter方法return返回目标对象的属性值,setter接收return过来的值,将接收过来的属性值赋给目标对象属性值从而达到修改代理对象属性值从而间接修改目标对象属性值

 // 目标对象let target = {msg:"hh"}// 代理对象let proxy = {}Object.defineProperty(proxy,'msg',{get:function(){return target.msg},set:function(val) {target.msg=val}})

如上代码,我们通过代理对象,对目标对象进行数据的修改

MVVM分层思想

这里就需要引入MVVM分层思想

M:Model(模型/数据)

V:View(视图)

VM:ViewModel(视图模型)

vue框架就起到了一个VM的作用,监听页面视图的变化,将数据反馈到页面视图上,视图和数据双向绑定。

new Vue()实例对象就像代理对象,而data是目标对象,我们访问实例对象就可以间接访问到目标对象上面,起到了数据代理的作用

let vm = new Vue({el:'.app',data:{msg:"hh"}})

访问vm

通过访问vm属性访问data目标是属性值

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

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

相关文章

JVM字符串常量池StringTable

目录 一、StringTable为什么要调整 二、String的基本特性 三、String的内存分配 四、字符串拼接操作 五、intern()方法 六、Stringtable的垃圾回收 七、G1中String去重操作 一、StringTable为什么要调整 jdk7之前,hotspot对于方法区的实现是永久代&#xff…

【算法】算法题-20231113

这里写目录标题 一、判断是否为回文数二、编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串(力口14)。三、在排序数组中查找元素的第一个和最后一个位置(力扣34题)四、删除排序数组中的…

【图像处理:OpenCV-Python基础操作】

【图像处理:OpenCV-Python基础操作】 1 读取图像2 显示图像3 保存图像4 图像二值化、灰度图、彩色图,像素替换5 通道处理(通道拆分、合并)6 调整尺寸大小7 提取感兴趣区域、掩膜8 乘法、逻辑运算9 HSV色彩空间,获取特定…

burpsuite安装详细教程

要安装 Burp Suite,可以按照以下步骤操作: 首先从官方网站 https://portswigger.net/burp/communitydownload 下载 Burp Suite 安装文件,选择适合自己操作系统的版本。 下载后,找到下载的安装文件,然后右键点击以管理员…

layui控件开发,实现下拉搜索从数据库获取数据

1 标签部分使用带搜索的下拉框 <div class"layui-inline"><label class"layui-form-label">单位</label><div class"layui-input-inline"><select name"org" lay-search id"org_dwbh" lay-filt…

ENVI IDL:如何基于气象站点数据进行反距离权重插值?

01 前言 仅仅练习&#xff0c;大可使用ArcGIS或者已经封装好的python模块进行插值&#xff0c;此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程&#xff0c;从而更深刻的理解IDL的使用和插值的理解。 02 函数说明 2.1 Read_CSV()函数 官方语法如下&#xff1a…

概念解析 | 菲涅尔方程 Fresnel Equations :揭示光的奥秘面纱

注1:本文系“概念解析”系列之一,致力于简洁清晰地解释、辨析复杂而专业的概念。本次辨析的概念是:菲涅尔方程 菲涅尔方程:揭示光的奥秘面纱 背景介绍 当光从一种介质传播到另一种介质时,部分光会折射进入新介质,部分会反射回原介质。这一现象被称为光的折射和反射。 19世纪…

Python---字典---dict

1、为什么需要字典 如果想要存储一个人的信息&#xff0c;姓名&#xff1a;Tom&#xff0c;年龄&#xff1a;20周岁&#xff0c;性别&#xff1a;男&#xff0c;如何快速存储。 person [Tom, 20, 男] 在日常生活中&#xff0c;姓名、年龄以及性别同属于一个人的基本特征。 但…

爬虫之数据解析

何为数据解析 概念&#xff1a;就是将爬取到数据中局部的指定的数据进行提取作用&#xff1a;实现聚焦爬虫数据解析通用原理&#xff1a; html是用来展示数据&#xff0c;html中展示的数据正是我们要爬取或者采集的数据数据解析的通用原理&#xff1a; 标签定位提取标签中存储…

Please No More Sigma(构造矩阵)

Please No More Sigma 给f(n)定义如下&#xff1a; f(n)1 n1,2; f(n)f(n-1)f(n-2) n>2; 给定n&#xff0c;求下式模1e97后的值 Input 第一行一个数字T&#xff0c;表示样例数 以下有T行&#xff0c;每行一个数&#xff0c;表示n。 保证T<100&#xff0c;n<100000…

使用Filter实现登录验证

1、什么是Filter Filter可认为是Servlet的一种特殊用法&#xff0c;主要是对用户发起的请求进行预处理或后处理&#xff0c;意思就是在请求到达用户想请求的地址之前先进入Filter&#xff0c;或者在离开用户请求之后进入Filter。Filter类似于门卫&#xff0c;你在进入之前门卫…

51单片机入门

一、单片机以及开发板介绍 写在前面&#xff1a;本文为作者自学笔记&#xff0c;课程为哔哩哔哩江协科技51单片机入门教程&#xff0c;感兴趣可以看看&#xff0c;适合普中A2开发板或者HC6800-ESV2.0江协科技课程所用开发板。 工具安装请另行搜索&#xff0c;这里不做介绍&…

数值分析算法(简介)

数值分析是研究使用数值计算方法解决数学问题的领域。当在比赛中使用高级语言进行编程时&#xff0c;可以编写相应的库函数来实现数值分析中常用的算法&#xff0c;如方程组求解、矩阵运算和函数积分等算法。下面我将介绍一些常用的数值分析算法以及可能需要编写的库函数。 方…

CompareM-平均氨基酸一致性(AAI)计算

文章目录 Comparem简介比较基因组统计基因组使用模式其他 安装使用基于基因组计算氨基酸一致性基于基因组蛋白计算氨基酸一致性 结果转变成矩阵参考 Comparem简介 CompareM 是一个支持进行大规模基因组比较分析的软件工具包。它提供跨基因组&#xff08;如氨基酸一致性&#x…

《未来之路:技术探索与梦想的追逐》

创作纪念日 日期&#xff1a;2023年07月05日文章标题&#xff1a;《从零开始-与大语言模型对话学技术-gradio篇&#xff08;1&#xff09;》成为创作者第128天 在这个平凡的一天&#xff0c;我撰写了自己的第一篇技术博客&#xff0c;题为《从零开始-与大语言模型对话学技术-…

阅读是一座随身携带的避难所:毛姆读书随笔

>> 我想要指明的第一件事就是阅读应当是享受的。当然&#xff0c;为了应对考试或学习知识&#xff0c;我们需要阅读许多书&#xff0c;这类阅读中是不存在什么享受的。我们只是为了获得知识而进行阅读。唯一能做的便是祈祷因为我们需要它&#xff0c;所以我们不至于在通读…

深度学习的集体智慧:最新发展综述

一、说明 我们调查了来自复杂系统的想法&#xff0c;如群体智能、自组织和紧急行为&#xff0c;这些想法在机器学习中越来越受欢迎。人工神经网络正在影响我们的日常生活&#xff0c;从执行预测性任务&#xff08;如推荐、面部识别和对象分类&#xff09;到生成任务&#xff08…

RT-DETR算法改进:更换损失函数DIoU损失函数,提升RT-DETR检测精度

💡本篇内容:RT-DETR算法改进:更换损失函数DIoU损失函数 💡本博客 改进源代码改进 适用于 RT-DETR目标检测算法(ultralytics项目版本) 按步骤操作运行改进后的代码即可🚀🚀🚀 💡改进 RT-DETR 目标检测算法专属 文章目录 一、DIoU理论部分 + 最新 RT-DETR算法…

从0到0.01入门React | 008.精选 React 面试题

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

深度学习/pytoch/pycharm学习过程中遇到的问题

1.在pycharm中打断点后&#xff0c;debug无反应&#xff0c;直到程序退出。 解决&#xff1a;将项目目录中的.idea文件夹删除&#xff0c;重启pycharm可解决 2.plt.imshow(img),plt.show()不显示图片。 解决&#xff1a;import matplotlib&#xff0c;matplotlib.use(TkAgg)…