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

Javascript Module pattern. How to access globals inside the module

本文关键字:模块 全局变量 访问 模式 Module 何访问 Javascript      更新时间:2023-09-26

我看到了以下代码

var MODULE = (function () {
var my = {},
    privateVariable = 1;
function privateMethod() {
    // ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
    // ...
};
return my;
 }());

这些属性可以像MODULE.module属性...右?但是如何在模块内部访问全局变量 privateVariable 和 privateMethod()(它们是模块中的全局变量......对吧?

您只能从模块代码本身中访问它们,如下所示:

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的值。

没有办法在模块范围之外访问privateVariable或privateMethod。

var MODULE = (function() {
 //...declare your module as above
}());
console.log(MODULE.privateVariable); //logs undefined

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

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

您可以从函数内的任何代码访问它们,但在函数外部无法直接访问它们。