前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript或ES6如何实现多继承总结【Mixin混合继承模式】

JavaScript或ES6如何实现多继承总结【Mixin混合继承模式】

作者头像
kirin
发布2020-09-18 10:31:29
3.2K0
发布2020-09-18 10:31:29
举报
文章被收录于专栏:Kirin博客Kirin博客

总结一句话:所谓的多继承或Mixin混合模式继承就是让继承的类成为一个变量即可【可以根据不同的需求继承不同的类】

注:Mixin混合模式是一种思想【可以把任何一个类都变成Mixin模式的可继承【变量类】的类】

JavaScript创建类的两种方式总结:

代码语言:javascript
复制
创建类的第一种方式
class Mixin1 {
constructor () {
console.log(“这是一个Mixin类”)
}
}
创建类的第二种方式
const Mixin2 = class {
constructor () {
console.log(“这是一个Mixin类”)
}
}
两种创建类的方式等价的【和函数的原理一致】
new Mixin2()
new Mixin2()

Mixin混合模式完美实现多继承:

代码语言:javascript
复制

// 共同的特性
class Base {
constructor () {
console.log(“Base”);
}
}
// 鱼类的特性【创建一个鱼类并继承Base】
const FishMixin = (superClass) => class extends superClass {
constructor () {
super();
console.log(“FishMixin”);
}
};
// 狗的特性【创建一个狗类并继承Base】
const DogMixin = (superClass) => class extends superClass {
constructor () {
super();
console.log(“DogMixin”);
}
};
// FishMixin 和 DogMixin 是没有任何继承关系的,如何Test都继承,就是多继承了
class Test extends DogMixin(FishMixin(Base)) {
}

真正多继承的原理是什么?【最终需要的效果】

代码语言:javascript
复制
这种继承等价于【但是这种继承是不合理的,因为DogMixin不能直接去继承FishMixin】
所以为了达成这种继承效果, 而不影响继承的原理,Mixin混合模式就是非常明智的选择!
class FishMixin extends Base {
}
class DogMixin extends FishMixin{
}
class Test extends DogMixin{
}

Mixin混合多继承实战总结【非常重要】

代码语言:javascript
复制
// 创建类的第一种方式
class Base {
constructor () {
console.log(“这是一个Base类”);
}
}
// 创建类的第二种方式
const Mixin = (SuperClass = null) => {
既然使用了extends继承,SuperClass必须是一个类,否则会报错!
如果不传入SuperClass,那么继承Mixin必须是Mixin()【是一个类方法】
SuperClass = SuperClass || class Empty {
};
return class extends SuperClass {
constructor () {
super();
console.log(“这是一个Mixin2类”);
}
}
};
【非常重要】这里的Mixin2是一个方法类,所以不传继承类参数的话也必须是Mixin2()
class Test1 extends Mixin() {
constructor () {
super();
console.log(“这是一个Test类”);
}
}
class Test2 extends Mixin(Base) {
constructor () {
super();
console.log(“这是一个Test类”);
}
}
new Test2();
new Test1();
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-09-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • JavaScript创建类的两种方式总结:
  • Mixin混合模式完美实现多继承:
  • Mixin混合多继承实战总结【非常重要】
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档