vue双向绑定原理文字说明

观察者 Obeserver

把配置对象中的data的每个属性通过defineProperty数据拦截设置访问器方法,并将其放在vm函数实例上即this._data。当数据发生改变时,调用set的setter函数通知订阅器。

订阅器 dep

dep = {

​ subscribe: [subscriber,subscriber],

​ subscribe: […],

​ …

}

一个对象,每个vm上的_data数据对应一个属性,每个属性都对应着多个订阅者组成的数组。

订阅者 watcher

订阅者就是一个对象。它需要一个能创建能订阅者,能更新内容的构造函数。

解析器 compile

如果想要达到订阅的目的。

​ 我们得知道是那个元素订阅了vm上的_data的那个数据变量。解析器能帮助我们解析view视图的元素,检查是否有v-model或者v-bind属性,有的话我们就可以创建一个订阅者并放在订阅器数组中。假如订阅者的元素为input 就可以传(订阅元素,this(即vm),订阅的数据变量,‘value’(改变视图的元素具有的属性))从而创建观察者实例,之后将它放在订阅池中。如果变量变化,通过通过 node.value = vm. _data[数据变量]更新视图。

收获
defineProperty中的 setter 和 getter是闭包
掌握了一种双向绑定的模式
更深入了解面向对象思想

如果未来理解的更通透,会更新。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值