Vue的双向绑定是通过数据劫持结合发布-订阅者模式实现的,即通过Object.defineProperty监听各个属性的setter,然后通知订阅者属性发生变化,触发相应的回调. 整个过程分为以下几步: 1.Observer通过Object.defineProperty实现对属性的变化监听,在变化时通知订阅者. 2.Compile,对每个元素节点的指令进行扫描和解析,根据指令模板替换数据,以及绑定相应的更新函数 3.Watcher是订阅者,是Observer和Compile的中间纽带,负责将变化