模式重用JS变量

时间:2014-06-20 05:33:37

标签: javascript jquery design-patterns

我遗漏了一些关于在哪里声明以及如何在webapp的生命周期中使用JS变量的理解难题

对于这个例子,我有一些带标记的地图布局。在某些范围内,我需要声明标记对象并将它们添加到地图中。

稍后在代码中,我想访问它们,因为我无法从地图中提取它们。

想到的一个解决方案是全局变量。 另一个是创建一个对象来保存这些标记,但该对象也需要是全局的

是否有其他方法来构建代码以便可以访问变量?

1 个答案:

答案 0 :(得分:0)

标准方法之一是作为范围的包装函数:

var MyPublicApi = (function() {
  // Scope-global variables
  var mapMarkers = [];

  // All non-public functions
  function myFunction() {
    // Something
  }

  // Initialization stuff
  mapMarkers.push(/* a marker */);

  // Return a public api, e.g. like this
  var api = {
    getMarkers: function() {
      return mapMarkers;
    }
  };
})();

外部函数声明允许您限制变量的可见性,这些变量的行为类似于函数中所有代码的全局变量。

如果您不想提供任何公开API,可以使用

(function() {
  // ...
})();

而不是

var MyPublicApi = (function() {
  // ...
})();