当前位置: 首页 > news >正文

vue2和vue3数据代理的区别

前言:

vue2 的双向数据绑定是利⽤ES5的⼀个 API ,Object.defineProperty( )对数据进行劫持结合发布订阅模式的方式来实现的。
vue3 中使⽤了 ES6Proxy代理对象,通过 reactive() 函数给每⼀个对象都包⼀层Proxy,通过 Proxy监听属性的变化,从而实现对数据的代理操作。

一,Object.defineProperty( )

  let obj = { }let val = ''Object.defineProperty(obj,'name',{enumerable: true, // 表示该属性是否可以在 for...in 循环中被枚举。默认为 false。configurable: true, // 能否被删除 默认falseget(){console.log(`访问name属性`)return val },set(newVal){console.log('newVal',newVal);val = newVal}})obj.name = 'coderkey' // 触发set方法
console.log(obj.name);  // 触发get方法
obj.age = '18'   // 不会触发set方案
console.log(obj.age); // 不会触发get方法
delete obj.name;   // 不会触发set方案

注意:只能访问和修改,新增和删除不会触发set方法


二,Proxy代理对象

let obj = {name: 'coderkey',age: 18,habby: {try1: '篮球鸡坤',try2: '足球'}
}
let handler = {// 访问get(target, prop) {console.log('触发get方法',target[prop]);return Reflect.get(target, prop)},// 修改与新增set(target, prop, value) {console.log('触发set方法',value);//通过反射对象把数据反射出去return Reflect.set(target, prop, value)},// 删除deleteProperty(target, prop) {console.log('触发delete方法');return Reflect.set(target, prop)}
}
let proxyObj = new Proxy(obj,handler)// 通过代理对象对目标对象进行增删改查操作
proxyObj.name = 'pink' // 触发set方法
proxyObj.sex = '男'  // 触发set方法
console.log(proxyObj.sex); // 触发get方法
delete proxyObj.sex // 触发deleteProperty方法
console.log(proxyObj.sex); // 触发get方法 undefined
console.log(proxyObj); // 代理对象 {name: 'pink', age: 18, sex: undefined} 

注意: 可以代理同一层对象,可以增删改查操作


http://www.lryc.cn/news/380366.html

相关文章:

  • 已解决ApplicationException异常的正确解决方法,亲测有效!!!
  • 「前端+鸿蒙」鸿蒙应用开发-常用UI组件-图片-参数
  • Tobii Pro Lab 1.232是全球领先的眼动追踪研究实验软件
  • 【flink实战】flink-connector-mysql-cdc导致mysql连接器报类型转换错误
  • 【Linux】系统文件IO·文件描述符fd
  • 【计算机网络篇】数据链路层(6)共享式以太网_网络适配器_MAC地址
  • 导入别人的net文件报红问题sdk
  • LangChain 介绍
  • 【区分vue2和vue3下的element UI Avatar 头像组件,分别详细介绍属性,事件,方法如何使用,并举例】
  • 数据分析必备:一步步教你如何用matplotlib做数据可视化(10)
  • Stable Diffusion部署教程,开启你的AI绘图之路
  • 三生随记——诡异的牙线
  • 批量重命名神器揭秘:一键实现文件夹随机命名,自定义长度轻松搞定!
  • 学习笔记——路由网络基础——路由转发
  • Python网络安全项目开发实战,如何防命令注入
  • 程序员如何高效读代码?
  • 全面分析一下前端框架Angular的来龙去脉,分析angular的技术要点和难点,以及详细的语法和使用规则,底层原理-小白进阶之路
  • VACUUM 剖析
  • 基于LangChain框架搭建知识库
  • LeetCode 1789, 6, 138
  • Redis部署模式全解析:单点、主从、哨兵与集群
  • python-docx顺序读取word内容
  • kafka 集群原理设计和实现概述(一)
  • three.js 第十一节 - uv坐标
  • git从master分支创建分支
  • Chromium 调试指南2024 Mac篇 - 准备工作 (一)
  • vue登陆密码加密,java后端解密
  • npm 安装踩坑
  • 内容安全复习 6 - 白帽子安全漏洞挖掘披露的法律风险
  • dp经典问题:爬楼梯