JavaScript のモジュール パターンでは、オブジェクトを返す自己実行関数として "即時呼び出し関数式" (自己実行匿名関数とも呼ばれます) が使用されます。自己実行関数がプライベート変数を非表示にして、返されたオブジェクトのみを公開するにはどうすればよいですか。なぜこれは通常の JavaScript 関数では起こらないのですか? では、次のミニモジュールでは、()() を囲むことなく同じカプセル化の概念を実現できないのはなぜでしょうか?
var Module = (function () {
var privateVariable = "foo",
privateMethod = function () {
alert('private method');
};
return {
PublicMethod: function () {
alert(privateVariable);
privateMethod();
}
};
})();