全局变量的模式

时间:2016-09-22 23:32:04

标签: javascript

我的应用程序中有几个变量,我必须在大多数闭包中使用,比如保存预加载请求的变量,或者保存当前应用程序状态的变量(需要在不同位置动态更改)。 / p>

所以我的应用程序结构如下所示:

(function() {
  var MainModule = (function () {

  })();
  var Utils = (function () {

  })();
  var Events = (function () {

  })();
})();

我在MainModule内创建了这些变量,但想要在UtilsEvents内更改它们,删除它们等。我一直在考虑两种方式:

  1. 创建Context闭包,用于保存这些变量的数组,并具有get()set()访问方法。
  2. 将这些变量作为参数传递给闭包,但我不能解开它们,因为javascript将数组/对象传递给函数的方式,我会遇到困难。
  3. 我该如何处理?

1 个答案:

答案 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只应该在需要时使用,否则它只是毫无意义的抽象。