大家都知道,vue2.x的双向绑定原理是利用数据劫持结合发布订阅模式实现的。
defineProperty缺陷
不能监听数组变化
只能劫持对象的属性(给对象添加属性vue无法检测到)
Proxy的好处
proxy可以直接监听数组的变化
proxy可以监听对象而非属性.它在目标对象之前架设一层“拦截”,因此提供了一种机制,可以对外界的访问进行过滤和改写。proxy直接劫持一个对象,并且会返回一个新对象。
原因:
由上可以看出,vue3使用proxy的原因:
proxy解决了defineProperty的缺陷。
proxy会被持续的性能优化
但是proxy由于是es6的方法,所以也会存在着兼容性的问题(不支持IE)