Vue3 数据响应式原理

核心:

javascript 复制代码
const userData = {
	name: "John",
    age: 12
};

let proxyUser = new Proxy(userData, {
	// 拦截读取属性值
    get (target, prop) {
    	return Reflect.get(target, prop)
    },
    // 拦截设置属性值或添加新属性
    set (target, prop, value) {
    	return Reflect.set(target, prop, value)
    },
    // 拦截删除属性
    deleteProperty (target, prop) {
    	return Reflect.deleteProperty(target, prop)
    }
})
// 设置属性值
proxyUser.name = 'bob'
proxyUser.age = 13

// 添加属性
proxyUser.sex = '男'
console.log(user)

// 删除属性
delete proxyUser.sex
console.log(user)

Vue3的响应式比Vue2好在哪里?

  1. 效率更高了,Vue2中假设监听某个对象,该对象中有一万个属性,他要循环遍历得到每个属性,并且通过每个属性的Object.defineProperty为每个属性加上set 和 get 方法,那如果有一万个就要加上一万对get 和 set方法,所以效率就很低;Vue3中直接一个代理对象proxy加上Reflect,再调用相关的方法就可以解决这个问题;
  2. Vue3中响应式的话是个深层次的监视,可监听对象里面的对象和数组;
相关推荐
IT_陈寒11 小时前
Java性能优化:3个90%开发者都忽略的高效技巧,让你的应用提速50%!
前端·人工智能·后端
^O^ ^O^11 小时前
pc端pdf预览
前端·javascript·pdf
艾小码11 小时前
还在纠结用v-if还是v-show?看完这篇彻底搞懂Vue渲染机制!
javascript·vue.js
徐同保11 小时前
js class定义类,私有属性,类继承,子类访问父类的方法,重写父类的方法
前端·javascript·vue.js
SUPER526616 小时前
FastApi项目启动失败 got an unexpected keyword argument ‘loop_factory‘
java·服务器·前端
sanx1816 小时前
专业电竞体育数据与系统解决方案
前端·数据库·apache·数据库开发·时序数据库
你的人类朋友19 小时前
【Node】认识一下Node.js 中的 VM 模块
前端·后端·node.js
Cosolar19 小时前
FunASR 前端语音识别代码解析
前端·面试·github
@大迁世界21 小时前
Vue 设计模式 实战指南
前端·javascript·vue.js·设计模式·ecmascript
芭拉拉小魔仙21 小时前
Vue项目中如何实现表格选中数据的 Excel 导出
前端·vue.js·excel