Js模块模式多个init

时间:2014-01-14 12:25:06

标签: javascript module-pattern

我的问题是关于js模块模式。有一个模块:

var moduleName = (function(self) {

  self.init() = function(){

    return self;
  }
  //Othert methods

  return self;
}(moduleName || {}));

请告诉我如何使用此模式创建多个初始化(模仿类实例)?

1 个答案:

答案 0 :(得分:0)

容易!

moduleName.init(); // Initialized once
moduleName.init(); // Initialized twice

如果要创建多个模块,请按照以下步骤调整代码,以遵循工厂模式

var newModuleName = function() {
  return ( function moduleName( self ){

    self.init = function(){
      return self;
    };

    //Other methods

    return self;
  }( {} ) );
}());

var module1 = newModuleName();
var module2 = newModuleName();

module1.init();
module2.init();

或者,使用传统的构造函数模式

var moduleName = function() {
  var self = this;

  if ( !( self instanceof moduleName ) ){
    return new moduleName();
  }

  self.init = function(){
    return self;
  };

  //Other methods
};