首先vue是一个mvvm模型框架
概念:双向绑定是vue的一个核心功能,所谓双向绑定就是当试图发生改变的时候传递给VM(ViewModel ),让数据得到更新,当数据发生改变的时候传给VM(ViewModel ),使得视图发生变化
vue怎么做到的呢?
observer(观察者),劫持监听所有属性,什么意思呢?
vue是通过这种模式进行数据劫持的,这种模式是发布者-订阅者模式
-
订阅者:就像我们生活中在淘宝京东买东西一样,我们是消费者就相当这种模式中的订阅者一样
-
发布者:你想买的书没货了,你和卖家说等你有货了你通知我,我再来买,那么卖家就是这种模式中的发布者,当然不只你一个人想买这本书,所以一个发布者可以给多个订阅者发布信息
-
知道了这种模式,它们是怎么通过数据劫持的,这里要引出Object.defineProperty()
Object.defineProperty(obj, "b", {
set: function () {
},
get: function () {
}
})
// 通过defineProperty中的set,get两个回调来进行数据劫持