vue2通过defineproty对data的数据生成getter和setter方法,同时创建observe类,同样的通过defineproty对data数据生成get方法与set方法,在getter里面里面创建通知中心dep,dep中添加观察者watcher,当数据发生改变时,setter方法下通知中心dep调用watcher观察者updata方法,观察者让解析器compiler发生改变 针对array的处理,因为不能检测数组的改变,因此需要替换array中的push,pop,shift,unshift,splice方法,在这些方法中,首先调用call方法去执行array的原型方法,这样能保证原来的push,pop的方法能正常运行,然后再调用自己的其他方法,例如通知观察者,然后观察者通知解析器去重新修改插值表达式的内容 vue3中通过proxy去生成getter与setter,然后,好处是比defineproty不需要针对数组去做修改,也能深度监听对象的改变