Sie müssten es auf dem Prototyp exportieren. Aber denken Sie daran, dass, wenn Sie tun, dass Sie nicht die Funktion in der Klasse/Objektkontext nennen:
export foo.prototype. fooMethod
aber ich würde Ihnen empfehlen, dies nicht zu tun.
Okay, aufgrund Ihres Kommentars mögen Sie eine gute Möglichkeit, eine gemeinsame Funktionalität für zwei Klassen haben, welche die gleiche Basisklasse nicht erweitern. Eine einfache Möglichkeit ist es, eine Nutzenfunktion von zwei Klassen zu importieren:
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);
}
}
Dies ist ein gutes Muster und funktioniert gut für eine einzelne Funktion, hat aber Grenzen, wenn Sie komplexere Funktionen anwenden möchten. Ein guter Weg, dies zu erreichen, ist ein Mischbild:
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) {
..
}
Dadurch wird beim Mischen eine neue anonyme Klasse zwischen Ihrer Klasse 'A'/'B' und 'BaseA'/'BaseB' erstellt, die die allgemeine Funktion foo
bietet.
'Export {foo.prototype.fooMethod als fooMethod}' funktionieren könnte. – gcampbell
Wie planen Sie, es aufzurufen? –
@IlyaNovojilov Nein, das würde die Klasse exportieren, nicht die nackte Methode. – Lux