vue数据监听分析Object.defineProperty与Proxy的区别
这篇文章主要介绍“vue数据监听分析Object.defineProperty与Proxy的区别”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue数据监听分析Object.defineProperty与Proxy的区别”文章能帮助大家解决问题。
Object.defineProperty 与 Proxy 的区别
其实在
api
的命名上就能看出端倪,Object.defineProperty
顾名思义,是与对象和属性有关的。 vue2
就是利用 defineProperty
的 set
和 get
方法去监听对象属性变化的。 而 Proxy
是直接去监听一个对象的。注意:他们在这里的区别就是
Object.defineProperty
监听的是对象的属性,而 Proxy
监听的是这个对象本身在使用上的差异
如上所述,
Object.defineProperty
监听的是对象的属性, 但是监听属性只能遍历监听对象已有的属性,对于可能新增的属性,vue2
是没有办法监听的,页面自然也就不会更新。 所以为了解决这个问题 vue2
提供了 set
方法,当新增属性时,可以通过 set
方法为新增的属性添加监听器。而
Proxy
带来的问题就是由于监听的是一个对象,自然能监听对象的所有属性变化,那么也就不再需要 set
这个方法了。但是由于监听的是对象,所以没法处理基础类型。当我们使用
ref(false)
去创建一个基本类型的响应式变量时,本质相当于 reactive({value: false})
。于是 Vue3
有了一个很奇怪的现象, 明明想用 ref
方法监听一个基础类型,却需要通过 .value
才能获取到具体值。 相关内容
这些是最新的
热门排行
- THINKPHP5+GatewayWorker+Workerman 开发在线客服系统
- 在手机浏览器网页中点击链接跳转到微信界面的方法
- 尊云网站目录系统 ThinkPHP5网站分类目录程序 v2.2.221011
- CentOS 7安装shadowsock(一键安装脚本)
- AdminTemplate 基于LayUI 2.4.5实现的网站后台管理模板
- 用NW.js(node-webkit)开发多平台的桌面客户端
- PHP生成随机昵称/用户名
- THINKPHP5网站分类目录程序 尊云网站目录系统
- 织梦(DEDECMS)微信支付接口 微信插件
- 基于LayUI开发的 网站后台管理模板 BeginnerAdmin
- 响应式后台网站模板 - AMA.ADMIN
- layuiAdmin后台管理模板 Iframe版
- LayUI 1.0.9 升级 至 LayUI 2.1.4 方法
- 简洁清爽的会员中心模板
- jQuery幸运大转盘抽奖活动代码