2016-10-18 4 views
3

私はJavascriptクラス(ES6で)がかなり長くなっています。それをより整理するために、2つまたは3つの異なるファイルに分割したいと思います。どうやってやるの?Javascriptクラス(ES6)を複数のファイルに分割しますか?

現在のところ、それは単一のファイルに次のようになります。

class foo extends bar { 
    constructor(a, b) {} // Put in file 1 
    methodA(a, b) {} // Put in file 1 
    methodB(a, b) {} // Put in file 2 
    methodC(a, b) {} // Put in file 2 
} 

ありがとう!

+3

典型的なOOP言語では、[構成](https://en.wikipedia.org/wiki/Object_composition)や[継承](https://en.wikipedia.org/wiki)などで必要なものを達成します。 /継承_(オブジェクト指向プログラミング))。 – Marty

+1

代わりに、これらのメソッドをクラスプロトタイプに割り当てる必要がありますか?そうであれば、それをグローバルにしてください。 – Hydro

+1

クラスメンバー(methodB、methodC)をクラス定義自体とは別のファイルに定義することはお勧めできません。しかし、独自のクラスファイルに別々の機能を入れることができます。たとえば、methodCに多くの電卓コードが含まれている場合は、別の電卓クラスを作成し、そのメソッドをmethodCから呼び出すことができます。 – Kokodoko

答えて

2

あなたは後でそのプロトタイプに割り当てることによって、このクラスにメソッドを追加することができ、クラス

class Foo extends Bar { 
    constructor(a, b) { 
    } 
} 

を作成します。

// methodA(a, b) in class Foo 
Foo.prototype.methodA = function(a, b) { 
    // do whatever... 
} 

ます。また、クラスに直接割り当てることによって、同様の静的メソッドを追加することができます:

// static staticMethod(a, b) in class Foo 
Foo.staticMethod = function(a, b) { 
    // do whatever... 
} 

これらの機能をlon gがの場合、の後にクラスが宣言されています。

ただし、コンストラクタは、必ずである必要があります(別のファイルに移動することはできません)。また、クラスメソッドが定義されているファイルが使用される前に実行されていることを確認する必要があります。

-1

私はJavascriptクラス(ES6で)がかなり長くなっています。それをより整理するために、2つまたは3つの異なるファイルに分割したいと思います。どうやってやるの?

ハンドラを必要としない場合は、ファイル1にクラスを宣言してグローバルにしなければなりません(前のコメントと同じように)。 (再)このクラスのプロトタイプオブジェクト(つまり関数)にプロパティを割り当てます。

クラスブロック式を終了する場合は、それが真実です。

+0

_ "静的にするメソッド... "_あなたのサンプルは、静的なメソッドではなく、通常のメソッドを作成します。 – zeroflagL

+0

@zeroflagL第3引数に '' writable''プロパティがありますか?私はそれを試しました。 – Hydro

+0

'writeable'は' static'とは何の関係もありません。 – zeroflagL

関連する問題