vue源码分析 initExtend ---三分一把刀

我是三分一把刀。

上一节看了initMixin源码,这节会弄明白initExtend方法的具体逻辑与实现。


代码内部没有进行操作,只是定义了vue.extend方法,印象中以前vue.extend(componentConfig)注册主键的时候会用到,就是把vue的一些特性继承复制过来。

首先也是如果不是生产环境,会监测组件名称是否有效。

const Sub = function VueComponent (options) { this._init(options)}

这行代码的this本身要和Sub.prototype = Object.create(Super.prototype)结合起来,就会知道,this._init其实是调用的父级的初始化方法,将子级的原型链指向父级的原型链

子级的options 和父级的options合并赋值给子级options,sub.options

后面的操作基本是将父级的属性方法赋给子级。

这里的initProps和initComputed没有进去做研究,看名称就知道是干啥,之后会补充。

我是三分一把刀,有误的地方希望各位指正。

https://juejin.im/post/5c88e669f265da2d8f47792a 【关于initProps 运作】

initProps

    源代码种的逻辑是根据传进来的属性先进行prop是否有效并且返回,然后设置为响应式对象defineReactive。

defineReactive可以理解为将数据设置为响应式数据,类似于java实体的get和set方法,内部实现自己的逻辑,给数据属性添加Dep依赖的实例。

内置属性:key,ref,slot,slot-scope,is

你可能感兴趣的:(vue源码分析 initExtend ---三分一把刀)