(
Ctor, //组件构造函数VueComponent
propsData, //组件props数据
data, // 组件属性 数据
contextVm, //vm vue实例化对象
children //组件子节点
)
| 5820 | |
| 5821 | //创建功能组件 通过检测 props 属性 然后合并props 之后创建 vond 虚拟dom |
| 5822 | function createFunctionalComponent( |
| 5823 | Ctor, //组件构造函数VueComponent |
| 5824 | propsData, //组件props数据 |
| 5825 | data, // 组件属性 数据 |
| 5826 | contextVm, //vm vue实例化对象 |
| 5827 | children //组件子节点 |
| 5828 | ) { |
| 5829 | console.log('==Ctor==') |
| 5830 | console.log(Ctor) |
| 5831 | console.log('==propsData==') |
| 5832 | console.log(propsData) |
| 5833 | console.log('==data==') |
| 5834 | console.log(data) |
| 5835 | console.log('==contextVm==') |
| 5836 | console.log(contextVm) |
| 5837 | console.log('==children==') |
| 5838 | console.log(children) |
| 5839 | |
| 5840 | |
| 5841 | |
| 5842 | var options = Ctor.options; //获取拓展参数 |
| 5843 | var props = {}; |
| 5844 | var propOptions = options.props; //获取props 参数 就是组建 定义的props 类型数据 |
| 5845 | console.log('==options.props==') |
| 5846 | console.log(options.props) |
| 5847 | |
| 5848 | if (isDef(propOptions)) { //如果定义了props 参数 |
| 5849 | for (var key in propOptions) { //循环 propOptions 参数 |
| 5850 | |
| 5851 | /* |
| 5852 | 验证支柱 验证 prosp 是否是规范数据 并且为props 添加 value.__ob__ 属性,把prosp添加到观察者中 |
| 5853 | * 校验 props 参数 就是组建 定义的props 类型数据,校验类型 |
| 5854 | * |
| 5855 | * 判断prop.type的类型是不是Boolean或者String,如果不是他们两类型,调用getPropDefaultValue获取默认值并且把value添加到观察者模式中 |
| 5856 | */ |
| 5857 | props[key] = validateProp( |
| 5858 | key, //key |
| 5859 | propOptions, //原始props 参数 |
| 5860 | propsData || emptyObject // 转义过的组件props数据 |
| 5861 | ); |
| 5862 | } |
| 5863 | } else { |
| 5864 | if (isDef(data.attrs)) { //如果定义有属性 |
| 5865 | // 前拷贝合并 props属性 并且把 from 的key 由 - 写法变成 驼峰的写法。 |
| 5866 | mergeProps(props, data.attrs); //合并props 和 属性 |
| 5867 | } |
| 5868 | if (isDef(data.props)) { //如果data定义有props 合并props |
| 5869 | mergeProps(props, data.props); |
| 5870 | } |
| 5871 | } |
| 5872 | // Ctor, |
| 5873 | // propsData, //组件props数据 |
| 5874 | // data, // vonde 虚拟dom的数据 |
| 5875 | // contextVm, //上下文this Vm |
| 5876 | // children //子节点 |
| 5877 | console.log(Ctor) |
| 5878 | // Ctor = function VueComponent(options) { |
| 5879 | // this._init(options); |
no test coverage detected