我最近在javascript中主要通过the article Real Mixins with javascript classes看到了Mixin的概念。据我所知,这是一种使用抽象类进行多重继承的方法,它更像是一个组合而不是一个继承。我也在阅读关于继承的概念组合,如the article Composition Over Inheritance。我知道关于继承和组合的讨论可能会很长,但我选择尽可能避免继承(至少现在)。
所以我想尽可能多地使用Mixins和ES6,在大多数例子中,我看到三个类在运行,如class A extends MixinB(C)
。如果我只想扩展B类怎么办?我会做class A extends MixinB(Object)
之类的事吗?这可能是Mozilla documentation状态的反模式。
请注意,我可以执行class A extends B
之类的直接继承,但是这样B
不再是Mixin,如果我想使用,我需要B
的不同声明它作为Mixin。
答案 0 :(得分:0)
我认为,您正在寻找的解决方案是改变Mixin
函数的定义。
而不是:
MixinB(WhateverClass)
你可以:
Mixin(MainClass, otherClass1, otherClass2...)
这是真的:
MixinB(C) = Mixin(B, C)
答案 1 :(得分:-1)
我不喜欢这个声音!
所以我想尽可能多地使用Mixins
在适当的地方使用mixins,而不是因为你想使用它们。继承适用于固定的强关系。当您想要与许多不相关的类共享一小部分功能时,Mixins非常有用。