我见过以下代码
var MODULE = (function () {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function () {
// ...
};
return my;
}());
可以像MODULE.moduleProperty一样访问属性......对吗? 但是如何在模块内部访问全局变量privateVariable和privateMethod()(这些是全局变量模块......对吗?)
答案 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
希望这有助于为您清理它。