- 博客(3)
- 收藏
- 关注
原创 compile源码解析
function Compile(el, vm) { this.$vm = vm; //this Compile的实例 $vm 是MVVM的实例 (vm) // el == "#app" 判断当前用户传递的el属性是元素节点还是选择器,如果是元素节点则直接保存到$el中通, //如果不是 则根据选择器 去查找对应的元素 然后保存 this.$el = this.isElementNode(el) ? el : document.querySelector(el);
2021-05-05 21:40:00
108
原创 Watcher源码解析
Dep用于依赖收集和派发更新,它收集所有的订阅者,当有数据变动的时候,它会把消息通知到所有的订阅者,同时它也调用Watcher实列中的update方法,用于派发更新。Watcher 用于初始化数据的watcher的实列。它原型上有一个update方法,用于派发更新。比如调用回调函数来更新页面等操作。function Watcher (obj, expOrFn, cb) { this.obj = obj; this.expOrFn = expOrFn; this.cb = cb; // 如
2021-05-05 21:32:41
105
原创 observer源码解析
Observer在MVVM中实现劫持的原理在Observer源码部分主要有三个部分:Observer、Dep、Watcher。实现observer我们将要observe的对象,通过递归,将它所有的属性,包括子属性的属性,都给加上set和get。这样的话,给这个对象的某个属性赋值,就会触发set。export default class Observer{ constructor(value) { this.value = value this.walk(value) } //递归。。让每个
2021-05-05 21:20:20
144
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人