vue数据绑定原理/响应式数据原理

说说你对数据劫持的理解?

1. 创建MVVM的对象的时候,内部进行了数据代理操作,进行会把data对象中的数据进行劫持操作,会创建劫持对象,内部遍历data中所有的数据
2. 每个属性都会创建对应的一个dep对象
3. 模板解析的时候内部最终会创建watcher对象,html模板中有一个表达式就会创建一个对应的watcher
4. 在watcher内部获取表达式值得时候,开始建立dep和watcher的关系
5. dep和watcher的关系:
1. 一对一的关系: 一个dep对应的一个watcher data中有一个属性,模板中用到了一次表达式
2. 一对多的关系: 一个dep对应着多个watcher data中有一个属性,模板中用到了多次表达式
3. 多对一的关系: 多个dep对应着一个watcher data中有多个属性,模板中用到了一次表达式
4. 多对多的关系: 多个dep对应着多个watcher data中有多个属性,模板中用到了多次表达式
6. 如果页面中发生了数据的变化(表达式/data中的属性值改变) , 找到该属性对应的dep对象,通知内部对应的watcher对象更新数据
7. watcher内部会调用updater对象中相关的方法进行表达式值得更新
8. 界面变化(重新渲染)

 

posted @ 2020-11-03 15:29  佳佳460  阅读(23)  评论(0编辑  收藏  举报