- 7.1 数据初始化
7.1 数据初始化
回顾一下之前的内容,我们对Vue源码的分析是从初始化开始,初始化_init会执行一系列的过程,这个过程包括了配置选项的合并,数据的监测代理,最后才是实例的挂载。而在实例挂载前还有意忽略了一个重要的过程,数据的初始化(即initState(vm))。initState的过程,是对数据进行响应式设计的过程,过程会针对props,methods,data,computed和watch做数据的初始化处理,并将他们转换为响应式对象,接下来我们会逐步分析每一个过程。
function initState (vm) {vm._watchers = [];var opts = vm.$options;// 初始化propsif (opts.props) { initProps(vm, opts.props); }// 初始化methodsif (opts.methods) { initMethods(vm, opts.methods); }// 初始化dataif (opts.data) {initData(vm);} else {// 如果没有定义data,则创建一个空对象,并设置为响应式observe(vm._data = {}, true /* asRootData */);}// 初始化computedif (opts.computed) { initComputed(vm, opts.computed); }// 初始化watchif (opts.watch && opts.watch !== nativeWatch) {initWatch(vm, opts.watch);}}
