0

私は次のコードを見ました

var MODULE = (function () {
var my = {},
    privateVariable = 1;

function privateMethod() {
    // ...
}

my.moduleProperty = 1;
my.moduleMethod = function () {
    // ...
};

return my;
 }());

プロパティは MODULE.moduleProperty のようにアクセスできます ...そうですか? しかし、モジュール内のグローバル privateVariable および privateMethod() にアクセスする方法 (これらはモジュール内のグローバルです...そうですか?)

4

2 に答える 2

1

いいえ、それらはグローバルではなく、無名関数内のローカル変数です。

関数内の任意のコードからアクセスできますが、関数外では直接アクセスできません。

于 2012-04-26T16:33:39.963 に答える
1

次のように、モジュールコード自体の中でのみアクセスできます。

var MODULE = (function () { 
 var my = {},
 privateVariable = 1;
 function privateMethod() {
  alert('this is private!');
 }

 my.moduleProperty = 1;
 my.moduleMethod = function () {
  privateMethod();
  return privateVariable;
 };
 return my;
}());

これを行う:

MODULE.moduleMethod();

プライベート メソッドを呼び出して (「これはプライベートです!」と警告し)、privateVariable の値を返します。

MODULE スコープ外の privateVariable または privateMethod にアクセスする方法はありません。

var MODULE = (function() {
 //...declare your module as above
}());

console.log(MODULE.privateVariable); //logs undefined

うまくいけば、それがあなたのためにそれを片付けるのに役立ちます.

于 2012-04-26T16:46:45.060 に答える