日常扫盲02:::2019-03-10

一. Vue实现双向数据绑定的原理

1. 实现方法

日常扫盲02:::2019-03-10_第1张图片
v.png

图解
将MVVM作为数据绑定的入口,
是采用数据劫持结合发布者-订阅者模式的方式,
通过Object.defineProperty()来劫持各个属性的setter,getter,
在数据变动时发布消息给订阅者,触发相应的监听回调。
整合Observer,Compile和Watcher三者
通过Observer来监听自己的model的数据变化,
通过Compile来解析编译模板指令(vue中是用来解析 {{}}),
最终利用watcher搭起observer和Compile之间的通信桥梁,
达到数据变化 —>视图更新;视图交互变化(input)—>数据model变更双向绑定效果。

2. 代码实现


    

3.访问器属性

定义:访问器属性是对象中的一种特殊属性,它不能直接在对象中设置,而必须通过 Object.defineProperty() 方法单独定义。MDN标准解析

  • get 和 set 方法内部的 this 都指向 obj,这意味着 get 和 set 函数可以操作对象内部的值。另外,访问器属性的会"覆盖"同名的普通属性,因为访问器属性会被优先访问,与其同名的普通属性则会被忽略。

你可能感兴趣的:(日常扫盲02:::2019-03-10)