你需要在原型上导出它。但请记住,如果这样做,你将无法在类/对象上下文中调用该函数:
export foo.prototype. fooMethod
然而,我建议您不要这样做。
好的,由于您的评论,您想要一种好的方法来为两个不扩展相同基类的类提供共同功能。一个简单的方法是从两个类中导入一个实用函数:
foo.js
export function foo() {
return this.name;
}
a.js
import {foo} from 'foo';
export class A extends BaseA {
foo() {
foo.apply(this, arguments);
}
}
b.js
import {foo} from 'foo';
export class B extends BaseB {
foo() {
foo.apply(this, arguments);
}
}
这个模式对于单个功能来说很好,但如果您想应用更复杂的功能,则有限制。实现这一点的好方法是混合模式:
foo.js
export default superClass => class extends superClass {
foo() {
return this.name;
}
};
a.js
import foo from 'foo';
export class A extends foo(BaseA) {
..
}
b.js
import foo from 'foo';
export class B extends foo(BaseB) {
..
}
这将使您的混合创建一个新的匿名类,它位于您的类'A'/'B'和'BaseA'/'BaseB'之间,为共同的函数foo
提供支持。
export { foo.prototype.fooMethod as fooMethod }
可能可行。 - gcampbellbar
的模块/类,它们共享相同的功能。为了避免在每个类中重复自己,我想将相同部分移动到不同的父类(如foo
)中。由于我只能使用一个其他类来extend
类,因此我的选择受限,我正在寻找其他实现方式。共享的方法在模板中经常使用,因此它们需要尽可能短。import {fooMethod) from ...
将直接访问fooMethod
而无需调用className.fooMethod
。希望这有意义。 - Rotareti