之前是从来不了解为什么是双向绑定的 今天突然看到了一道这样的面试题 然后就去了解了一下 感觉还挺有意思
Vue实现双向绑定的原理:Object.defineProperty()
主要是采用数据劫持结合发布者-订阅者的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,出动相应的监听回调。
vue的数据双向绑定 将MVVM作为数据绑定的入口,整合Observer,Compile和Watcher三者,通过Observer来监听自己的model的数据变化,通过Compile来解析编译模板指令(vue中是用来解析 {{}}),最终利用watcher搭起observer和Compile之间的通信桥梁,达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。
图片转自https://blog.csdn.net/houguangzhao/article/details/112358923