在 JavaScript 中声明私有静态成员变量

Fur*_* S. 1 javascript design-patterns

我被 JavaScript 中的设计模式所困扰,我想创建一个私有静态成员变量来保持对象计数。沿着这些思路:

var person = function(name){
    //How to persist this value across multiple calls avoiding Globals
    var _personCount = _personCount || 0;
    _personCount++;
    var _name = name;
    getPerson = function(){
          return "Person is: " + _name;
    }
};

person("foo");//_personCount should be 1 after this call
person("bar");//_personCount should be 2 after this call
Run Code Online (Sandbox Code Playgroud)

这个想法类似于私有静态变量,只能由类的内部变量访问

Jos*_*eam 5

您可以使用揭示模块模式

var something = (function() {
  var myThing = 0;

  return {
    doSomething: function() {
      myThing++;
    }
  };
})();

something.doSomething(); // myThing is now 1
Run Code Online (Sandbox Code Playgroud)

该变量位于所谓的 IIFE(立即调用函数表达式)内,将在程序的整个生命周期中保留。

如果您要在不同的地方多次实例化该模块,则还需要创建一个singleton