1.vue中的数据劫持代理指的是开发者调用或修改组件data里的某个属性时可以直接使用this.属性名,而不用写成this.data.属性名
2.实现原理主要就是用到了Object.defineProperty()方法,具体实现代码如下

<script type="text/javascript">//模拟组件datalet data = {userName :'玄猫',year:18}//模拟组件实例let _this = {}for(let item in data){//利用object.defineProperty()Object.defineProperty(_this,item,{// 获取代理的item属性值时调用get方法get(){return data[item]},// 修改代理的item属性值时调用set方法set(newValue){// _this.item = newValue  不能这么写,要不会进入调用set的死循环data[item] = newValue}})}console.log(_this)// 没有set方法而直接修改时会修改不成功,因为不允许在_this上直接修改其代理的属性_this.userName = 'xs'console.log(_this.userName)</script>

vue中数据劫持代理相关推荐

  1. 微信小程序——数据劫持代理

    index.html index.js // Vue数据劫持代理//模拟Vue中data选项 let data = {username:'小镭',age:3 }// 模拟组件的实例 let _this ...

  2. 既然Vue通过数据劫持可以精准探测数据变化,为什么还需要虚拟DOM进行diff检测差异?

    既然Vue通过数据劫持可以精准探测数据变化,为什么还需要虚拟DOM进行diff检测差异? 考点: Vue的变化侦测原理 前置知识: 依赖收集.虚拟DOM.响应式系统 现代前端框架有两种方式侦测变化,一 ...

  3. vue中数据异步更新($nextTick)的问题

    在vue中数据向视图上进行更新的操作,是异步的 异步的就意味着,在代码中更改完数据之后,直接去访问页面中的元素中的内容,还是老数据 那么如何去解决这个问题呢? vue中提供了$nextTick方法: ...

  4. 微信小程序 03 数据劫持代理和事件绑定

    3.1 Vue 中 data 选项 是怎么做到的呢 ? 利用 Object.defineProperty 就能做到 数据双向绑定. Object.defineProperty(属性所在对象,属性的名字 ...

  5. Vue响应式原理Vue中数据的监听

    文章目录 Observer理解如上图 Dep「依赖管理」 Watcher理解如上图 总结:Vue响应式原理的核心就是Observer.Dep.Watcher. Vue响应式原理理解以后就知道Vue是怎 ...

  6. vue中数据之间的传递用propos

    子集 父集 以上是子父集互相传递数据. 传参数的时候是以对象的形式展示的,封装在propos中的. 如果默认值是string或者number类型,那么可以用default表示. 如果默认值是objec ...

  7. Vue中配置服务代理(proxy)

    第一步:在  Vue.config.js 里配置以下代码 : /**vue.config.js**/const { defineConfig } = require('@vue/cli-service ...

  8. vue中通过第三方代理解决跨域问题

    最近在学node,遇到了跨域的问题,来记录下方法 首页服务端的框架是通过express-generator 搭建起来的 npm install -g  express-generator 具体接下来的 ...

  9. Vue学习:Vue中的数据代理

    一.回顾Object.defineProperty Object.defineProperty方法可以用来增加和修改对象的属性,该方法有三个参数: 1.属性所在的对象: 2.属性的名字: 3.一个描述 ...

最新文章

  1. 成都服务器怎么租用最便宜—Vecloud
  2. VTK:比较随机生成器用法实战
  3. pagerank数据集_从数据结构到算法:图网络方法初探
  4. 儿童手表怎么删除联系人_华为儿童手表4X体验:与你一起守护孩子的成长,带娃不再辛苦...
  5. hadoop伪分布式配置
  6. python实现IIR高通低通,带通,带阻滤波器详解及应用案例
  7. 关于app.config不能即时保存读取的解决方案
  8. RedHat系统的Yum安装
  9. python撤回快捷键大全_Python基础之PyCharm快捷键大全
  10. 樊登读书赋能读后感_《赋能》读后感心得体会
  11. gmail无法登陆的解决!!
  12. Cask ‘libreoffice-still‘ definition is invalid .....unknown or unsupported macOS version: :mavericks
  13. 给大家介绍六个不错的数据分析工具
  14. vue 批量下载图片并打包成压缩包
  15. 超全MES系统知识普及,必读此文
  16. 马云装神弄鬼拜见过被通缉的气功大师王林, 歪门邪道的人还办教育,用淘宝支付宝真的不放心
  17. 2379. 得到 K 个黑块的最少涂色次数
  18. 数字化应用:银行客户KYC
  19. Oauth2.0搭建开放平台接口
  20. php天下第一的梗,DNF中那些怪梗盘点,最后一个已经被99%的玩家遗忘了

热门文章

  1. 找素数模板:马氏筛法【复杂度nlgnlgn】
  2. pdf文件太大怎么变小,如何压缩pdf大小
  3. req和res的作用
  4. 7-11 最长的单词
  5. 默林娱乐集团首席执行官首度访华,上海乐高乐园度假区新进展
  6. 汉诺塔问题的Java实现(递归与非递归)
  7. 没有功德的人就在眼前--我看到了“裸男”
  8. java 计算一个月有多少天和多少周
  9. python windows10 安装 tensorrt、torch2trt
  10. MacOS 开发 — App多开