web-dev-qa-db-ja.com

オブジェクトリテラルを使用した最高のJavaScriptコーディング構造?

Object Literalは、JavaScriptの最良のコーディングプラクティスに不可欠なコンポーネントの1つとして、近年確立されていることは間違いありません。ただし、オブジェクトリテラルを使用してコードを構造化するための最良の方法については、よくわかりません。

モジュールパターンがコードを構造化するための優れた手法である可能性があることは以前に示唆されています [1][2] しかし、モジュールパターンに関する批判が人々として浮上し始めていますテクニックの範囲を調査するためにより多くの時間を費やしました。 [3][4]

それで、私の質問は、2011年の夏の時点で、オブジェクトリテラルを利用してコードを構造化するために認められた最良の方法は何ですか?それはまだモジュールパターンですか、それとも他のいくつかのテクニックがまだより良い代替品としてすでに登場していますか?

5
gsklee

モジュールのパターンは特定の状況では適切な場合がありますが、プロパティを非公開にする必要があるかどうかを検討する必要があります。プロパティをプライベートにする必要がある場合は、必ず、モジュールパターンを使用してください。

var namespace = (function(){ 
  var a = {
    internalFunction: function (number) {/*Do internal stuff*/},
    internalVariable: 365,
    publicFunction: function() { return internalFunction(internalVariable) },
  }
  return {
    publicFunction: a.publicFunction
  }
}();

すべての関数にアクセスできることを気にしない場合は、次の単純な形式を使用してください。

var namespace = {
  noLongerInternalFunction: function(number) {/*Do stuff*/},
  noLongerInternalVariable: 365,
  stillPublicFunction: function() { 
    return noLongerInternalFunction(noLongerInternalVariable); 
  }
}
5
Peter Olson

これはあまり意味がありません。 「オブジェクトリテラル」のデザインパターンはなく、「オブジェクトリテラル」はコンポーネントではありません。

オブジェクトリテラル(複数形)はJavascript構文の固有の機能であり、特定のデザインパターンや実際のデザイン全体との関連性はわかりません。

(また、他の人が任意の時点でどのパターンを使用しているかについてあまり気にしないようにしてください。ジョブに適したツールを使用してください。)