1.在new Vue()的时候,vue\src\core\instance\index.js里面的_init()初始化各个功能

    1. function Vue (options) {
    2. if (process.env.NODE_ENV !== 'production' &&
    3. !(this instanceof Vue)
    4. ) {
    5. warn('Vue is a constructor and should be called with the `new` keyword')
    6. }
    7. this._init(options) //初始化各个功能
    8. }

    2.在_init()中有这样的一个执行顺序:其中initState()是在beforeCreate和created之间

    1. initLifecycle(vm)
    2. initEvents(vm)
    3. initRender(vm)
    4. callHook(vm, 'beforeCreate')
    5. initInjections(vm) // resolve injections before data/props
    6. initState(vm) //初始化
    7. initProvide(vm) // resolve provide after data/props
    8. callHook(vm, 'created')

    3.在initState()做了这些事情:

    1. if (opts.props) initProps(vm, opts.props)//初始化Props
    2. if (opts.methods) initMethods(vm, opts.methods)//初始化methods
    3. if (opts.data) {
    4. initData(vm)} else {
    5. observe(vm._data = {}, true /* asRootData */)}//初始化data
    6. if (opts.computed) initComputed(vm, opts.computed)//初始化computed

    4.所以 Props, methods, data和computed 的初始化都是在beforeCreated和created之间完成的。

    参考资料:https://segmentfault.com/q/1010000010364198