根据调试工具看Vue源码之computed(一)
官方定义
- 类型:
{ [key: string]: Function | { get: Function, set: Function } }
- 详细:计算属性将被混入到 Vue 实例中。所有 getter 和 setter 的 this 上下文自动地绑定为 Vue 实例...
计算属性的结果会被缓存,除非依赖的响应式属性变化才会重新计算。注意,如果某个依赖 (比如非响应式属性) 在该实例范畴之外,则计算属性是不会被更新的。
上面这几段话其实可以归纳为以下几点:
computed
是计算属性,会被混入到Vue
实例中computed
的结果会被缓存,除非依赖的响应式属性变化才会重新计算
如何初始化computed
?
同以往一样,先新建一个Vue
项目,同时加入以下代码:
export default { name: 'test', data () { return { app: 666 } }, created () { console.log('app proxy -->', this.appProxy) }, computed () { appProxy () { debugger return this.app } } }
F12
打开调试界面,刷新后断点停在了debugger
的位置,同时可以看到右边的调用栈:
appProxy
get
evaluate
computedGetter
created
- ...
瞥到computedGetter
之后,点进去,可以看到:
function createComputedGetter (key) { return function computedGetter () { var watcher = this._computedWatchers && this._computedWatchers[key]; if (watcher) { if (watcher.dirty) { watcher.evaluate(); } if (Dep.target) { watcher.depend(); } return watcher.value } } }
看到这里不禁一脸懵逼
相关推荐
源码zanqunet 2020-10-28
anchongnanzi 2020-09-21
CRMCRMCRMDS 2020-08-12
Cricket 2020-07-27
yuzhu 2020-11-16
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
sjcheck 2020-11-03
怪我瞎 2020-10-28
gloria0 2020-10-26
王军强 2020-10-21
学习web前端 2020-09-28
QiaoranC 2020-09-25
安卓猴 2020-09-12
Macuroon 2020-09-11
kiven 2020-09-11
LittleCoder 2020-09-11
Cheetahcubs 2020-09-13
小焊猪web前端 2020-09-10