Appearance
immediate
javascript
// new Watcher 创建完 user watcher 后判断一下 options.immediate 是否为真,为真就
// 把 cb.call(this, watcher.value),watcher.value 就是 初始值。
Vue.prototype.$watch = function (
expOrFn: string | (() => any),
cb: any,
options?: Record<string, any>
): Function {
// expOrFn 就是 watch 的 key,即监视的属性。
// cb 就是 watch 的 handler,即属性变化时的回调。
const vm: Component = this
if (isPlainObject(cb)) {
return createWatcher(vm, expOrFn, cb, options)
}
options = options || {}
// 标识是 user watcher
options.user = true
// 通过 Watcher 实现
const watcher = new Watcher(vm, expOrFn, cb, options)
if (options.immediate) {
cb.call(this, watcher.value)
}
}