七:Proxy可以实现什么功能?

72 阅读1分钟

在Vue3中通过Proxy来替换原本的Object.defineProperty来实现数据响应式。
Proxy是ES6中新增的功能,他可以用来自定义对象中的操作。
代表需要添加代理的对象,handler用来自定义对象的操作,比如可以用来自定义set或者get函数。
通过自定义set和get函数的方式,在原本的逻辑中插入了我们的函数逻辑,实现了在对象任何属性进行读写时发出通知。 当然这是简单版的响应式实现,如果需要实现一个vue中的响应式,需要在get中收集依赖,在set派发更新,之所以vue3要使用Proxy替换原本的API原因在于Proxy无需一层层递归为每个属性添加代理,一次即可完成以上操作,性能上更好,并且原本的实现有一些数据更新不能监听到,但是proxy可以完美监听到任何方式的数据改变,唯一缺陷就是浏览器的兼容性不好。