【进阶】为什么vue3采用proxy而不是defineProperty?

大家都知道,vue2.x的双向绑定原理是利用数据劫持结合发布订阅模式实现的。

defineProperty缺陷

不能监听数组变化
只能劫持对象的属性(给对象添加属性vue无法检测到)

Proxy的好处

proxy可以直接监听数组的变化
proxy可以监听对象而非属性.它在目标对象之前架设一层“拦截”,因此提供了一种机制,可以对外界的访问进行过滤和改写。proxy直接劫持一个对象,并且会返回一个新对象。

原因:

由上可以看出,vue3使用proxy的原因:
proxy解决了defineProperty的缺陷。
proxy会被持续的性能优化
但是proxy由于是es6的方法,所以也会存在着兼容性的问题(不支持IE)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容