issues
search
weijiyang
/
GOOD-IDEA
这里记录一些灵感~详见ISSUES
1
stars
0
forks
source link
vue computed 原理
#29
Open
weijiyang
opened
4 years ago
weijiyang
commented
4 years ago
初始化 data和computed,分别代理其set以及get方法, 对data中的所有属性生成唯一的dep实例。
对computed中的reversedMessage生成唯一watcher,并保存在vm._computedWatchers中
访问 reversedMessage,设置Dep.target指向reversedMessage的watcher,调用该属性具体方法reversedMessage。
方法中访问this.message,即会调用this.message代理的get方法,将this.message的dep加入reversedMessage的watcher,同时该dep中的subs添加这个watcher
设置vm.message = 'World',调用message代理的set方法触发dep的notify方法'
因为是computed属性,只是将watcher中的dirty设置为true
最后一步vm.reversedMessage,访问其get方法时,得知reversedMessage的watcher.dirty为true,调用watcher.evaluate()方法获取新的值。
weijiyang
commented
4 years ago
vue computed原理