プロトタイプにエクスポートする必要があります。しかし、それを行うと、クラス/オブジェクトのコンテキストで関数を呼び出さないことに注意してください:
export foo.prototype. fooMethod
しかし、私はそうしないことをお勧めします。
あなたのコメントにより、同じ基本クラスを拡張しない2つのクラスに共通の機能を持たせることをお勧めします。
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);
}
}
:1つの簡単な方法は、二つのクラスからユーティリティ関数をインポートすることです
これは良いパターンであり、単一の機能でうまく機能しますが、より複雑な機能を適用する場合は制限があります。これを達成するための良い方法は混合パターンである:
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
を提供します。
出典
2016-07-11 13:34:46
Lux
'エクスポート{fooMethodとしてfoo.prototype.fooMethod}'働くかもしれません。 – gcampbell
これをどのように呼び出す予定ですか? –
@IlyaNovojilovいいえ、これは裸のメソッドではなく、クラスをエクスポートします。 – Lux