您必须将其导出到原型上。但请记住,如果这样做,您将不会在类/对象上下文中调用该函数:
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
.