exportfunctioninitInternalComponent(vm:Component,options:InternalComponentOptions){constopts=vm.$options=Object.create(vm.constructor.options)//这样做是因为它比dynamic快枚举。constparentVnode=options._parentVnodeopts.parent=options.parentopts._parentVnode=parentVnodeconstvnodeComponentOptions=parentVnode.componentOptionsopts.propsData=vnodeComponentOptions.propsDataopts._parentListeners=vnodeComponentOptions.listenersopts._renderChildren=vnodeComponentOptions.childrenopts._componentTag=vnodeComponentOptions.tagif(options.render){opts.render=options.renderopts.staticRenderFns=options.staticRenderFns}}initInternalComponent方法接受两个参数,第一个参数是组件实例,即this。第二个参数是在组件构造函数中传递的选项。根据上面的分析,在createComponentInstanceForVnode方法中定义了这个选项::InternalComponentOptions={_isComponent:true,_parentVnode:vnode,parent}//检查内联模板渲染函数constinlineTemplate=vnode.data.inlineTemplateif(isDef(inlineTemplate)){options.render=inlineTemplate.renderoptions.staticRenderFns=inlineTemplate.staticRenderFns}returnnewvnode.componentOptions.Ctor(options)}option中有三个属性值,_isComponent上面已经说了;_parentVode其实就是组件实例的vnode对象(createComponentInstanceForVnode根据这个vnode对象创建组件实例);parent是组件的父组件实例对象。然后我们使用这样的例子:
