// been updated.
Sub.superOptions = Super.options
Sub.extendOptions = extendOptions
Sub.sealedOptions = extend({}, Sub.options)
// cache constructor
cachedCtors[SuperId] = Sub
return Sub
}
}
首先我们可以看到,extend方法返回的Sub其实是一个构造函数,而且继承自Vue,也就是说extend方法返回的是Vue的一个子类。
Sub.prototype = Object.create(Super.prototype)
Sub.prototype.constructor = Sub这两行代码其实就是实现Sub对Vue的继承,源码中有一行是
const Super = this所以这里的Super指的就是Vue。
Sub.options = mergeOptions(
Super.options,
extendOptions
)我们注意到在extend中也会对传进来的配置option和Vue原来的options做一个合并。
使用场景:
当我们不需要全局去混入一些配置,比如,我们想要获得一个component。我们可以使用
Vue.component(),也可以使用
Vue.extend()。
const ChildVue = Vue.extend({
...options
})new ChildVue({
...options
})
注意extend得到的是一个Vue的子类,也就是构造函数。
区别:
mixin是对Vue类的options进行混入。所有Vue的实例对象都会具备混入进来的配置行为。
extend是产生一个继承自Vue类的子类,只会影响这个子类的实例对象,不会对Vue类本身以及Vue类的实例对象产生影响。
总结
以上所述是小编给大家介绍的Vue中mixin和extend的区别和使用场景,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对软件开发网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!










