Javascript模块模式。如何访问模块内的全局变量

时间:2012-04-26 16:26:26

标签: javascript module closures

我见过以下代码

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

function privateMethod() {
    // ...
}

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

return my;
 }());

可以像MODULE.moduleProperty一样访问属性......对吗? 但是如何在模块内部访问全局变量privateVariable和privateMethod()(这些是全局变量模块......对吗?)

2 个答案:

答案 0 :(得分:1)

不,它们不是全局的,它们是匿名函数中的局部变量。

您可以从函数中的任何代码访问它们,但在函数之外它们不能直接访问。

答案 1 :(得分:1)

您只能从模块代码本身的WITHIN中访问它们:

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

希望这有助于为您清理它。