我需要定义一个可以被多个类使用的函数,但据我所知,从超类继承对我来说不起作用。本质上,我想要实现的是为每个类扩展多个接口的能力。
例如,如果我定义了Apple
、Orange
、Banana
类,我希望它们都有一个相同的isFresh()
函数。我还喜欢让Apple
、Orange
和Earth
拥有一个getRadius()
方法。这有点类似于Apple interface Fruit, SphericalObject {...}
我也希望能够覆盖的功能,如果我想。然而,继承对我不起作用,因为我想从多个超类继承。
实现这一目标的最佳途径是什么?
我知道这个similar post,我理解JavaScript是动态类型的,没有接口,建议的Duck Type似乎不能解决我的问题。我并不关心检查接口中的方法是否存在于子类中。
3条答案
按热度按时间a0zr77ik1#
看起来你在找“混合”它们不是内置在JavaScript中的,但在用户环境中很容易实现,例如:
iklwldmw2#
您只需要一个
extends
就可以实现您的结果。yqyhoc1h3#
关于被广泛误解的风险:受Douglas Crockford的启发,我停止使用类或原型(好吧,我在ES中从未使用过的类,never had any use for it)。
创建factory functions。这是一个示范性的水果工厂。
为了实现这个想法,我创建了一个小的Stackblitz project,使用了一种更通用的方法。