2

実際、次の 2 つのパターンの違いは何ですか?

mySpace = mySpace || {}
mySpace.isObsolete = function() {};
mySpace.hipsterYear = 2006;

利用方法:

var iable = mySpace.isObsolete();
var year = mySpace.hipsterYear;

B (モジュールパターン)

mySpace = (function(){
  var obj = {};
  var someVar = 2012;
  obj.hipsterYear = 2006;
  obj.isObsolete: function() {};
  return obj;
}());

利用方法:

var iable = mySpace.isObsolete();
var year = mySpace.hipsterYear;

B では、無名関数によって someVar に外部からアクセスできないスコープが作成されます。Aではそのような構成は不可能だと思いますか?したがって、A と B は作成されるスコープが異なります。

名前空間に関する違いは何ですか? AとBは同等ですか?

4

1 に答える 1

4

B は一般に「モジュール パターン」と呼ばれ、変数とメソッドへのパブリックおよびプライベート アクセスを持つオブジェクト指向アプローチを使用するオプションを許可しますが、A ではすべてがパブリックです。Douglas Crockford がここで最もよく説明しています。

A のアプローチを使用すると、すべてが他のコード/コーダーからの干渉に対して脆弱になるため、これは一般的に良い考えです。これにより、誰か (おそらくあなた) が近道をしようと決めた場合に、あいまいなバグが発生する可能性が高くなります。

于 2012-07-17T12:40:36.550 に答える