initLifecycle函数的定义位于源码的src/core/instance/lifecycle.js
let parent = options.parent
if (parent && !options.abstract) {
while (parent.$options.abstract && parent.$parent) {
parent = parent.$parent
}
parent.$children.push(vm)
}
第一步:获取父组件,判断是否有父组件且父组件是否是抽象组件 第二步:有父组件且父组件是抽象组件就用 while 循环向上寻找父组件且父组件不是抽象组件。
parent.$children.push(vm)
找父组件后把自己放到父组件的子组件数组里面
vm.$parent = parent
自己的父组件就是找的不抽象父组件
vm.$root = parent ? parent.$root : vm
$root 是自己的根实例,假如有父组件父组件的根实例就是我自己的,假如没有我自己是我自己的根实例。
vm.$children = []
vm.$refs = {}
vm._watcher = null
vm._inactive = null
vm._directInactive = false
vm._isMounted = false
vm._isDestroyed = false
vm._isBeingDestroyed = false
初始化赋值。