Вам придется экспортировать его на прототипе. Но помните, что если вы делаете, что вы не будете вызывать функцию в контексте класса/объекта:
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
.
'экспорт {foo.prototype.fooMethod в fooMethod}' может работать. – gcampbell
Как вы планируете его вызывать? –
@IlyaNovojilov no, это будет экспортировать класс, а не голый метод. – Lux