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中响应式的话是个深层次的监视,可监听对象里面的对象和数组;
相关推荐
Komorebi゛3 分钟前
【CSS】斜角流光样式
前端·css
Irene199110 分钟前
CSS 废弃属性分类总结
前端·css
青莲84320 分钟前
Android 事件分发机制 - 事件流向详解
android·前端·面试
musashi20 分钟前
用 Electron 写了一个 macOS 版本的 wallpaper(附源码、下载地址)
前端·vue.js·electron
满天星辰21 分钟前
Typescript之类型总结大全
前端·typescript
JFChen22 分钟前
Web 仔用 Node 像 Java 一样写后端服务
前端
XiaoSong25 分钟前
React useState 原理和异步更新
前端·react.js
徐徐子26 分钟前
从vue3 watch开始理解Vue的响应式原理
前端·vue.js
拾荒的小海螺28 分钟前
开源项目:Three.js 构建 3D 世界的工具库
javascript·3d·开源
眯眼因为很困啦29 分钟前
GitHub Fork 协作完整流程
前端·git·前端工程化