1、vue2.x

通过object.defineProterty 为data中的数据 添加getter和setter方法,并且为每个实例都对应一个watcher实例 用来,读取 data 中的数据时自动调用 get 方法,当修改 data 中的数据时,自动调用 set 方法,检测到数据的变化,通知watcher 实例, 重新渲染组件更新视图
ps:当数据新增或者删除的时候 是监听不到的,视图不会更新
解决方法:
object.assign()
this.$set()

2、vue3.0

通过proxy 对象 劫持getter setter 然后notify()去通知模板进行编译