vue2知识点:数据代理

vue2项目从0搭建(二):配置代理,登录功能和菜单权限 vue2项目token校验和权限校验 阅读详情

在这里插入图片描述

一、何为数据代理

数据代理:通过一个对象代理对另一个对象中属性的操作(读/写)

    let obj = {x:100}
    let obj2 = {y:200}

    Object.defineProperty(obj2, "x", {
        get() {
            return obj.x
        },
        set(value) {
            obj.x = value
        }
})

案例:在控制台通过obj2.x去修改x的属性值,并打印修改后的obj2结果,如下图

在这里插入图片描述

二、vue中的数据代理

问题:数据代理干了啥?

答案:
简单说:通过Object.defineProperty()方法把data对象所有属性添加到vm(Vue原型)对象上,且为每个属性指定一个getter/setter。
复杂说:首先vue把data对象所有属性添加到命名为_data的对象中,通过Object.defineProperty()方法把_data对象所有属性添加到vm(Vue原型)对象上,并为每一个添加到vm上的属性,都指定一个getter/setter,这样vm对象就有了属性name和address,不然你想操作属性只能使用_data.name_或者data.address,这样很不方便。
在这里插入图片描述
在这里插入图片描述

三、回顾Object.defineProperty()

回顾Object.defineProperty()方法,该方法可动态设置属性。
defineProperty(目标对象, key, {config})
注意点1:defineProperty中如果定义使用get()和set(),那么属性value和writable:true必须注释掉,不然报错
注意点2:如果defineProperty中只定义value属性,那么控制台赋值无效,即必须设置writable:true才能对person属性实现更新

let number = 18
let person = {
        name:"张三",
        sex:"男"
}

Object.defineProperty(person, "age", {
        value:18,
}

在这里插入图片描述
如果defineProperty()方法设置属性enumerable:true、writable:true、configurable:true就可实现跟局部定义变量属性一样的效果,可增删改

Object.defineProperty(person, "age", {
        value:18,
        enumerable:true,    //控制属性是否可以枚举(也就是是否可以遍历访问到),默认值是false
        writable:true,      //控制属性是否可以被修改,默认值是false
        configurable:true,   //控制属性是否可以被删除,默认值是false
}

在这里插入图片描述
defineProperty()方法定义get()和set()

Object.defineProperty(person, "age", {       
        //当有人读取person的age属性时,get函数(getter)就会被调用,且返回值就是age的值
        get() {
             console.log('有人读取age属性了')
             return number
         },
        // //当有人修改person的age属性时,set函数(setter)就会被调用,且会收到修改的具体值
         set(value) {
             console.log('有人修改age属性了')
            number = value
        }
    })

本人其他相关文章链接

1.《基础篇第1章:vue2简介》包含Vue2知识点、个人总结的使用注意点及碰到的问题总结

2.《基础篇第2章:vue2基础》包含Vue2知识点、个人总结的使用注意点及碰到的问题总结

3.《进阶篇第3章:vue进阶-组件》包含组件、自定义事件、插槽、路由等等扩展知识点

4.《基础篇第4章》:使用vue脚手架创建项目

5.vue2知识点:数据代理

6.vue2知识点:事件处理

7.vue2知识点:列表渲染(包含:v-for、key、取值范围、列表过滤、列表排序、vue监视对象或数组的数据改变原理、总结vue数据监测)

8.vue2知识点:计算属性与监听属性

9.vue2知识点:生命周期(包含:生命周期介绍、生命周期钩子、整体流程图详解)

10.vue2知识点:非单文件组件和单文件组件

11.vue2知识点:组件is属性

12.vue2知识点:组件模板定义

13.vue2知识点:组件的props属性、非props属性、props属性校验

14.vue2知识点:组件自定义事件

15.vue2知识点:组件插槽分发

16.vue2知识点:动态组件

17.vue2知识点:混入

18.vue2知识点:浏览器本地缓存

19.vue2知识点:全局事件总线(GlobalEventBus)

20.vue2知识点:消息订阅与发布

21.vue2知识点:nextTick语法

22.vue2知识点:Vue封装的过度与动画

23.vue2知识点:路由

24.vue2知识点:vm调用待$命令介绍

25.vue组件通信案例练习(包含:父子组件通信及平行组件通信)

26.vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解

27.vue2基础组件通信案例练习:待办事项Todo-list案例练习

28.vue2基础组件通信案例练习:把案例Todo-list改写成本地缓存

29.vue2基础组件通信案例练习:把案例Todo-list改成使用自定义事件

30.vue2基础组件通信案例练习:把案例Todo-list改成使用全局事件总线

31.vue2基础组件通信案例练习:把案例Todo-list改成使用消息订阅与发布

32.vue2基础组件通信案例练习:把案例Todo-list新增编辑按钮

33.vue2基础组件通信案例练习:把案例Todo-list改成使用动画与过度

34.学习vue2遇到过的问题及个人总结

PSM倾向匹配详细步骤和程序 目录1.安装psmatch2统计包。2.数据准备3.数据分析及命令解读4.结果解读4.1模型拟合结果,此处无太多实际意义。4.2试验组可匹配的观测概览,按照命令中设定的匹配规则,试验组有8例患者未能匹配到合适对照。4.3结果解读的重点应该是对stata新生成的中间变量的解读。4.4均衡性检验结果4.5匹配结果的图示化5.Stata命令汇总最后留下两个问题给大家思考:题目 试验设计中,匹配的目的在于确保干预效应估计是建立在可比个体之间的不同结果的基础上。最简单的匹配方式是将干预组和对照组中协变量值相同的两个个 阅读详情

相关推荐

图像质量评估:使用 SSIM 计算图像相似性

在图像处理领域,衡量两幅图像之间相似性的一种常见方法是使用结构相似性指数(SSIM)。SSIM 是一种全参考的图像质量评估指标,它不仅考虑了图像的亮度、对比度,还考虑了结构信息。在本文中,我们将介绍一个使用 Python 和 OpenCV 实现的 SSIM 计算脚本,并使用该脚本评估两幅图像的相似性。

hasque2019的博客 1144

Vue2的代理,路由以及通信能手VueX(下)

Vue2中的Ajax、路由、VueX通信以及常用组件库,至此Vue2到了尾声,Vue2的笔记也到这里结束了,可以通过三篇笔记进行复盘。

Yovvis的博客 1929

基于LangGraph的智能报告生成平台项目分析

不知道你是否知道或者了解OpenAI and Gemini Deep Research。他们是一种能够根据输入问题进行规划、结合网络搜索获取信息并最终呈现结果的研究工具或技术。那这样research是如何实现的呢?最近刚好看到一个实现类似功能的开源项目: open_deep_search。本文将基于该项目进行代码层面剖析。

u011160113的博客 918

Vue2 (配置代理、插槽) day-012

注意:Vue 2.5 之后将原来的接收 dataObj 的属性名由原来的 scope 改成为 slot-scope,因此这两种方法现阶段都可以使用。 标签来接受 AP组件中解析的中的内容。这个库是 vue 1.0 官方使用的,之后交给了其他团队维护,首选还是axios。jsonp:比较局限,需要前后端共同对接,并且只能处理 get 请求。app组件 slot="center" 指的要放入的插槽。List组件,绑定事件,接受emit 发送过来数据。

javaxueba的博客 1360

U型槽微带贴片天线:从理论公式到带宽扩展实战

本文深入探讨了U型槽微带贴片天线的设计与带宽扩展实战。针对传统微带天线带宽窄的痛点,详细解析了通过引入U型槽形成双谐振点以拓宽带宽的原理,并提供了从MATLAB理论计算、ANSYS HFSS仿真建模到参数优化的一站式工程指南。文章还分享了多种带宽扩展组合技巧及仿真与实测避坑经验,助力射频工程师设计出高性能的宽带微带天线。

weixin_29168153的博客 439

【中国大学生计算机设计大赛信息可视化赛道】国奖项目深入剖析—中国古代奇异怪兽移动端可视化应用项目

【中国大学生计算机设计大赛信息可视化赛道】国奖项目深入剖析—中国古代奇异怪兽移动端可视化应用项目 注:本文主要目的是对于往年国奖项目案例-可视化项目的深入剖析讲解,对源码、项目特点、要点、特色继续深入分析。帮助大家学习技术,掌握规律。

一键难忘的博客 3717

Vue2——配置代理(解决ajax跨域问题)

使用vue脚手架解决ajax跨域请求。

mantou_riji的博客 3568

npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org的解决方案

本文主要介绍了npm install 时出现npm error code ENOTFOUND和npm error network request to https://registry.npmjs.org 的解决方案,希望能对使用npm的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 6万+

vue2中的配置代理和路由的使用

上述代码的意思是,当请求路径以/api开头时,会被代理到http://localhost:3000地址,例如/api/user会被代理到http://localhost:3000/user。Vue.js 2中的路由是通过Vue Router实现的,它允许你在单页面应用(SPA)中管理应用的路由,实现页面之间的切换和导航。然后,在Vue应用的入口文件(通常是main.js)中导入Vue Router并将其挂载到Vue实例上。在Vue CLI中,你可以在项目根目录下的vue.config.js文件中配置代理。

2301_77661976的博客 2121

在WIN10系统中安装TIA博途V18,重启后提示安装介质不可用,请插入DVD 或检查网络连接的解决办法

在WIN10系统中安装TIA博途V18,重启后提示安装介质不可用,请插入DVD 或检查网络连接的解决办法

Robot_PLC_HMI_Automation 1万+

Modbus通信从入门到精通_2_Modbus TCP通信详解及仿真(搭建ModbusTCP仿真环境:创建虚拟PLC并进行ModbusTCP通讯;寄存器与PLC中映射关系;适合理解如何编写上位机)

LocalPort”是PLC的端口,最终的设置如下图所示:(相关的设置都可以查看帮助文档)P#DB1.DBX0.0 BYTE28是以指针形式表示的DB1的DBX0.0开始(在使用的西门子Modbus tcp的程序块中设置的“MB_HOLD_REG”输出寄存器),其有28个字节(28个字节对应14个寄存器),4001是第一个寄存器,往后数14个即可。在上面的基础上,增加一个“DB1”的“组对象”,同时将“MW0”的组对象禁止(双击组对象,“Active”取消勾选),启动之后发现无法连接。

分享学习成长历程,Winter is coming! 1万+

《Vue知识点2MVVM模型与数据代理》

本文摘要: 文章主要讲解了Vue.js中的MVVM模型和数据代理机制。内容包括:1)MVVM模型的三层结构(Model-View-ViewModel)及其通信原理;2)Object.defineProperty方法的使用,通过getter/setter实现属性监听;3)数据代理的概念,即通过一个对象代理操作另一个对象的属性;4)Vue实现数据代理的原理,通过Object.defineProperty将data属性映射到vm实例上,并自动生成getter/setter,使开发者能更方便地操作数据。文章通过代码

欢迎来到我的博客 607

cannot import name ‘BUFSIZE‘ from ‘numpy‘ 解决方案

本文主要介绍了cannot import name ‘BUFSIZE’ from ‘numpy’ 解决方案,希望能对使用numpy的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 22万+

vue2.0核心知识点——之数据代理

Vue2 的响应式数据代理

学而不思则罔,思而不学则殆 789

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Vue知识点整理(一)- Vue核心(2)- 数据代理和事件处理

目录 一、MVVM模型 二、数据代理 2.1 Vue中的数据代理 2.2 Vue中数据代理的好处 2.3 基本原理 三、事件处理 3.1 事件的基本使用 3.2 事件修饰符 3.3 键盘事件 3.3.1 Vue中常用的按键别名 3.3.2 注意事项 3.3.3 简单键盘事件案例 一、MVVM模型 M:即模型(Model),对应data中的数据 V:即视图(View),模板 VM:即视图模型(ViewModel),Vue实例对象 Data Bindings:数据绑定

JHY97的博客 964

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Vue2(一):初识Vue、模板语法、数据绑定、el和data的两种写法、MVVM、数据代理、事件

1、想让Vue工作,就必须创建一个Vue实例,且要传入一个配置对象。2、root容器里代码依然符合HTML规范,只不过混入了一些特殊的Vue语法。3、root容器里的代码被称为【Vue模板】。4、Vue容器与与Vue实例是一对一关系,一个容器只能被一个Vue实例接管,一个Vue实例只能接管一个容器。5、真实开发中只有Vue实例,并且会配合着组件一起使用。6、{{xxx}}中的xxx要写js表达式(不能写if,for这样的js代码),且xxx可以自动读取到data中的所有属性。................

weixin_42044763的博客 3877

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Vue2 基础知识点

data函数、methods中的函数、watch中的函数、computed中的函数 它们的this均是【VueComponent实例对象】。data函数、methods中的函数、watch中的函数、computed中的函数 它们的this均是【Vue实例对象】。2、所有不被Vue所管理的函数(定时器的回调函数,ajax的回调函数等、promise的回调函数)最好写成箭头函数。且要给标签配置value值。4、methods中配置的函数,都是被Vue所挂你的函数,this的指向是vm 或 组件实例对象。

Fziha的博客 1149

【Vue】defineProperty与数据代理

0 前言 defineProperty在Vue中有着广泛的应用,其设计及使用思想也很值得学习与借鉴。在Vue2中,用defineProperty实现了数据代理。 另外,应当注意,Vue3中改用proxy实现数据代理,这与Vue2不同。 1 defineProperty 1.1 是什么 Object.defineProperty,defineProperty是js对象的方法。 1.2 目标需求 person有name和sex,要给person添加age属性。 读取person.age,就获得number值

RogerQianpeng的博客 443

Vue 2.x 常用知识点笔记(万字笔记)

Vue 2.x 常用知识点笔记,包含MVVM模型、脚手架、路由、全局事件总线等

qqgg0216的博客 1263

Vue2.0 知识点总结:基础篇一

动态构建用户界面的渐进式 JavaScript 框架,遵循 MVVM 模式,编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发,它本身只关注 UI, 也可以引入其它第三方库开发项目。

m0_57587753的博客 1752

Vue2-重要知识点

子给父转数据一种组件间通信的方式,适用于:父组件 ===> 子组件 (父给子传数据)通过父组件给子组件绑定一个自定义事件实现子给父传递数据(第一种写法,使用@或v-on)通过父组件给子组件绑定一个自定义事件实现子给父传递数据(第二种写法,使用ref)全局事件总线:App.vue-- props方式: --> <!-- 通过父组件给子组件传递函数类型的props实现子给父传递数据 --> < School :mps = " getSchoolName " /> <!

马朋帅的博客 1213

Vue2知识点总结及学习心得

Vue2学习笔记第一篇

weixin_60537353的博客 437

Vue2 面试题之 Vue 源码 - data 劫持

在 Vue2 的面试中,经常会涉及到对 Vue 源码的理解,其中 data 劫持是一个重要的知识点。本文将结合一个视频的内容,详细介绍 Vue2 中 data 劫持的实现原理,并附上相关的 JavaScript 代码。

m0_57836225的博客 1218

vue2以及部分vue3

本文摘要了Vue.js开发中的关键知识点:1)消息订阅与发布(pubsub)实现任意组件间通信;2)nextTick在DOM更新后的回调机制;3)Vue过渡动画的实现方式;4)两种配置代理的方法及优缺点;5)插槽的三种类型(默认/具名/作用域)及使用场景;6)Vuex集中式状态管理的核心概念和基本环境搭建。

2503_93390114的博客 782

Vue2框架语法及注意点

Vue项目Vs Code关闭语法检查配置,Vue2基础语法及注意点

q1242220128的博客 290

「offer来了」从基础到进阶原理,从vue2到vue3,48个知识点保姆级带你巩固vuejs知识体系

巩固你的vuejs知识体系序言一、vue2.x基础知识预备二、vue2.x基础知识常见面试题1. 请说出vue.cli项目中src目录每个文件夹和文件的用法?2. vue.cli中怎样使用自定义的组件?有遇到过哪些问题?3. v-show和v-if的区别4. 为何v-for中要用key5. 描述Vue组件生命周期(1)单组件生命周期(2)父子组件生命周期关系6. Vue组件如何通讯(常见)7. 描述组件渲染和更新的过程8. vue如何处理刷新数据不丢失9. 双向数据绑定 v-mo

moandaylab 4912
上一篇: SpringBoot项目thymeleaf页面支持词条国际化切换
下一篇: vue2知识点:事件处理
刘大猫.
博客等级 码龄9年 6万+粉丝 730原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘大猫.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值