2017-12-08 7 views
2

Module pattern(JavaScriptがネイティブクラスをサポートしていないので)私たちは、単一の内部の両方のパブリックとプライベートメソッドや変数を格納できるように、クラスの概念を模倣するために使用されますオブジェクト。モジュールのパターンが依然として必要今ではjavascriptを持っている本来の「クラス」

今javascriptのは、それが自分のネイティブクラスのしていることを今でも必要に応じてこのまだパターンか?

+3

モジュールパターンがありませんまったくクラスを模倣する。ローカルスコープへのアクセスで単一の値(関数、名前空間オブジェクト、クラス、シングルトンなど)を作成するために使用されます。クラスは、コンストラクタ+プロトタイプアプローチによって(もしかすると)模倣されます。 – Bergi

+2

私はまだこのパターンをES6で使用しています。ほとんどの場合、いくつかの変数の範囲を制限したいときです。 – sp00m

+2

関連:[constでIIFEパターンを不要にする](https://stackoverflow.com/q/33534485/1048572) – Bergi

答えて

2

モジュールパターンのみ(あるいは主に)ではないクラスを模倣するために使用。それはproper modulesだ、ではないクラス、古いモジュールのパターンが...になる可能性がある場合廃止、多くの場合、が少なくなります。、次の数年です。それらはprivate methods(現在は段階  3提案である)およびおそらく程度はprivate fields(また段階  3)です。あなたはプライベートではない何かにプライベート関数やデータまたは類似の関連を持つようにしたい場合は

しかし、彼らと適切なモジュール、あるいは時には同時の前に、あなたはまだそれを使うだろう。例:

const Foo = (function() { 
    function privateFunction(x) { 
     return /*...do something with `x`...*/; 
    } 

    class Foo { 
     dosomething(x) { 
      return privateFunction(x) ? "a" : "b"; 
     } 
    } 
    return Foo; 
})(); 

は、私はまた、時々、あなたはclassいるので、むしろ生命維持よりも、無名ブロックを使用する場合がありますのでご注意const、およびletはブロックスコープを持っています。私は(私はブロックでそれに割り当てることができます)外Fooを非一定にする必要があると思いますので、私は上記のではないだろうが、それが適用される場合があります、他の時間があります...

+0

お返事ありがとうございます – Liondedan

関連する問題