我的应用程序中有几个变量,我必须在大多数闭包中使用,比如保存预加载请求的变量,或者保存当前应用程序状态的变量(需要在不同位置动态更改)。 / p>
所以我的应用程序结构如下所示:
(function() {
var MainModule = (function () {
})();
var Utils = (function () {
})();
var Events = (function () {
})();
})();
我在MainModule
内创建了这些变量,但想要在Utils
和Events
内更改它们,删除它们等。我一直在考虑两种方式:
Context
闭包,用于保存这些变量的数组,并具有get()
和set()
访问方法。我该如何处理?
答案 0 :(得分:0)
(function() {
var MainModule = (function () {
var mine;
return {
getMine: function(){ return mine; },
setMine: function(a){ mine = a; }
}
})();
var Utils = (function () {
return function(module){
module.getMine();
}
})();
var Events = (function () {
})();
})();
IIFE没有给MainModule变量赋予任何东西,所以我假设其他东西会在Utils中调用一些东西。 get / set是访问私有变量的最安全的方法。就像评论所说的那样,IIFE只应该在需要时使用,否则它只是毫无意义的抽象。