一、Javascript Proxy 代理
JavaScript 的 Proxy 对象允许你创建一个代理,用于拦截和自定义对对象的基本操作(例如属性查找、赋值、枚举、函数调用等)。这使得 Proxy 在处理对象时具有非常强大的功能,比如数据验证、观察和操作等。
创建和使用 Proxy
下面是一个基本的 Proxy 使用示例:
常用的陷阱方法
这些陷阱方法可以组合使用,来实现各种复杂的代理行为:
二、Vue Reactive 响应式原理
查看 Vue 3.4 源码对 Reactive (packages/reactivity/src/reactive.ts) 的实现,核心是使用 Javascript Proxy 代理:
createReactiveObject
函数方法如下 (下面只显示核心部分):
Javascript Proxy 代理对象接收两个参数 target、handler,Vue Reactive 在 handler 中主要实现了 get 和 set 方法对属性进行依赖追踪和触发更新,当然也实现了其他方法,例如 has、deleteProperty、ownKeys
三、其他
学习的记录,仅供参考