1.10 props methods inject computed合并

源码的设计将props.methods,inject,computed归结为一类,他们的配置策略一致,简单概括就是,如果父类不存在选项,则返回子类选项,子类父类都存在时,用子类选项去覆盖父类选项。

  1. // 其他选项合并策略
  2. strats.props =
  3. strats.methods =
  4. strats.inject =
  5. strats.computed = function (parentVal,childVal,vm,key) {
  6. if (childVal && "development" !== 'production') {
  7. assertObjectType(key, childVal, vm);
  8. }
  9. if (!parentVal) { return childVal } // 父类不存在该选项,则返回子类的选项
  10. var ret = Object.create(null);
  11. extend(ret, parentVal); //
  12. if (childVal) {
  13. // 子类选项会覆盖父类选项的值
  14. extend(ret, childVal); }
  15. return ret
  16. };