私は私のチームに標準化されたJavascriptのコーディングスタイルを提案するための研究を行っています。ほとんどのリソースは今、このような閉鎖を伴う「モジュール」のパターンをお勧めします:Javascriptモジュールパターンの利点は何ですか?
var Module = function() {
someMethod = function() { /* ... */ };
return {
someMethod: someMethod
};
}();
をしてModule.someMethod();
ようにそれを呼び出します。このアプローチは、従来のOOPコンテキストで静的であるメソッド、例えばデータをフェッチ/保存するためのリポジトリクラス、外部要求を行うためのサービスレイヤなどでのみ機能するように見えます。私が何かを見逃していない限り、モジュールパターンは通常、サービスメソッドからUIグルーコードに渡す必要があるデータクラス(DTOと考える)で使用するためのものではありません。
私が引用した参照の共通の利益は、モジュールパターンとJavaScriptで真のプライベートメソッドやフィールドを持つことができるということですが、これはまた、 "静的またはインスタンスメソッドを持つことができることとともにを達成することができますこれと同様の古典」Javascriptのスタイル:
myClass = function(param) {
// this is completely public
this.publicProperty = 'Foo';
// this is completely private
var privateProp = param;
// this function can access the private fields
// AND can be called publicly; best of both?
this.someMethod = function() {
return privateProp;
};
// this function is private. FOR INTERNAL USE ONLY
function privateMethod() {
/* ... */
};
}
// this method is static and doesn't require an instance
myClass.staticMethod = function() { /* ... */ };
// this method requires an instance and is the "public API"
myClass.prototype.instanceMethod = function() { /* ... */ };
だから私は、私の質問は、伝統的なスタイルよりもモジュールのパターンが優れて作るものだと思いますか?それはちょっときれいですが、それはすぐに明らかな唯一の利点であるようです。実際、伝統的なスタイルは静的なメソッドのコレクションを単に返すのではなく、実際のカプセル化(JavaやC#のような真のOOP言語に似ています)を提供する能力を提供するようです。
紛失しているものがありますか?
モジュールパターンを使用してプロトタイプを作成することもできます。 'var Module = function(){ function Module(){}; Module.prototype.whatever =関数(){}。 リターンモジュール }(); ' –
あなたはあなたが静的またはインスタンスメソッドを使用するかどうかは問題はずのシングルトンを定義する場合。その後、私は、「これは」と、コールバックでの機能のアドオンを使用してをめちゃくちゃ心配する必要はありませんので、実際に、私は静的なバージョンを好むだろう。 – hugomg