hasOwn(parent, key)) { mergeField(key); } } function mergeField(key) { var strat = strats...options 所拥有的属性就是调用mergeField函数传递进来的key。 举个栗子: 你在创建Vue的根实例,并且传递了一个自定义选项对象。...hasOwn(parent, key)) { mergeField(key); } } 通过for..in.. 语句把child对象上可枚举的属性名作为参数传递给mergeField。...(注:不扩展讲解) 当前栗子中"el"、"data"、"count" 这三个属性名作为字符串会作为参数传递给mergeField函数。...在回归到mergeField函数你是否能顿悟了。
mergeOptions(parent, child.mixins[i], vm) } } const options = {} let key for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat...走入到 mergeField 流程。mergeField 先取合并策略。
parent = mergeOptions(parent, mixin); } } for (let key in parent) { mergeField...parent.hasOwnProperty(key)) { mergeField(key); } } function mergeField(key
mergeOptions(parent, child.mixins[i], vm) } } const options = {} let key for (key in parent) { mergeField...hasOwn(parent, key)) { // 如果parent已经处理过某个key 就不处理了 mergeField(key) // 处理child中的key 也就parent中没有处理过的...key } } function mergeField (key) { const strat = strats[key] || defaultStrat options...options调用strats中不同的方法进行合并 } return options } 从上面的源码,我们得到以下几点: 优先递归处理 mixins 先遍历合并parent 中的key,调用mergeField...方法进行合并,然后保存在变量options 再遍历 child,合并补上 parent 中没有的key,调用mergeField方法进行合并,保存在变量options 通过 mergeField 函数进行了合并
我们看 mergeOptions 函数的最后一部分源码: const options = {} let key for (key in parent) { mergeField(...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat...options[key] = strat(parent[key], child[key], vm, key) } 可以看到, 分别遍历 parent 和 child 对象, 对每一个 key 值都调用了mergeField...()函数 mergeField()函数是最终的合并策略函数。
child.mixins[i], vm) } } } const options = {} let key // 循环父类 for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } // 合并字段 function mergeField (key) { const
word域还可以用于一些对于格式要求严格的文档导出(将域建立在模板图片上),本文使用c#基于Aspose.Word实现word域套打功能 创建域 以word2013为例,插入-文本-文档部件-域,选择MergeField
var options = {}, key; // 先处理 parent 的 key, for (key in parent) { mergeField...parent.hasOwnProperty(key)) { mergeField(key); } } // 拿到相应类型的合并函数,进行合并字段...,strats 请看下面 function mergeField(key) { // strats 保存着各种字段的处理函数,否则使用默认处理 var
config2 = {} 7 } 8 9 const config = Object.create(null) 10 11 for (let key in config2) { 12 mergeField...config2[key]) { 17 mergeField(key) 18 } 19 } 20 21 function mergeField(key: string): void {...[key]) 24 } 25 26 return config 27} 合并方法的整体思路就是对 config1 和 config2 中的属性遍历,执行 mergeField 方法做合并,这里 config1...的接口定义添加一个字符串索引签名: 1export interface AxiosRequestConfig { 2 // ... 3 4 [propName: string]: any 5} 在 mergeField
} } } const options: ComponentOptions = {} as any let key for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } // 合并parent和child选项 function mergeField(key
vm) } } } // 递归遍历合并组件和混入的属性 const options = {} let key for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat
child.mixins[i], vm) } } // 使用strat中的合并方法去依次合并配置对象 const options = {} let key for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat = strats
vm) } } // 使用strat中的合并方法去依次合并配置对象 const options = {} let key for (key in parent) { mergeField...hasOwn(parent, key)) { mergeField(key) } } function mergeField (key) { const strat
聚焦到 data 部分: function initData (vm: Component) { // 获取合并 data 的处理函数,在mergeField时会合并,栗子 中的 parentVal
领取专属 10元无门槛券
手把手带您无忧上云