基本认知
在vue2中,利用的是 Object.defineProperty 去劫持对象的访问器(中的Getrer , Setter属性),
当对象 属性值 发生变化时,可获取变化,然后根据变化来作后续响应;
(它是一个一个的劫持,一次只能截取一个)
在vue3中,则是通过 Proxy 代理对象进行类似的操作,劫持的是整个对象,只要对象中的属性变化了,
都能劫持到
Object.defineProperty 和 Proxy 的优缺点?
Proxy
1.可以直接监听整个对象,而非是对象的某个属性
2.可以直接监听数组的变化
3.拦截方法丰富:多大13种,不限 get set deleteProperty , has 等
比 Object.defineProperty 强大很多
Object.defineProperty
兼容性较好(可支持到IE9)
------vue放弃了对IE8的支持