vue实现继承的原理
Vue 实现继承的原理
Vue 的继承机制主要通过 extends 选项或混入(mixins)实现,其核心原理基于 JavaScript 的原型继承和选项合并策略。
原型链继承
Vue 组件本质上是构造函数,通过 Vue.extend() 方法创建子类构造函数。子类会继承父类的原型属性和方法:
const Parent = Vue.extend({ /* 父组件选项 */ });
const Child = Parent.extend({ /* 子组件选项 */ });
此时 Child 的原型链为:Child → Parent → Vue。
选项合并策略
Vue 在继承时会按特定规则合并父子组件的选项:
- 生命周期钩子:同名钩子函数会被合并为数组,子组件钩子先执行
- data:子组件 data 会递归合并父组件 data,冲突时以子组件为准
- methods/components/directives:同名字段会覆盖父级定义
- 其他选项:默认采用子组件覆盖父组件的策略
混入(Mixins)机制
混入是一种扁平化继承方式,通过 mixins 选项将多个对象的选项合并到当前组件:
const myMixin = { created() { console.log('mixin hook') } };
new Vue({ mixins: [myMixin], created() { console.log('component hook') } });
输出顺序为:mixin hook → component hook。
组合式 API 继承
在 Vue 3 中,可通过 setup() 函数实现逻辑复用:
// 父逻辑
const useParent = () => { const count = ref(0); return { count } };
// 子组件
setup() {
const { count } = useParent();
return { count }
}
注意事项
- 避免深度继承链,推荐使用组合式 API 或混入实现横向复用
- 同名属性覆盖可能导致意外行为,需明确合并策略
- 生命周期钩子的执行顺序可能影响业务逻辑







