JavaScript:Stefanov 模块模式的实例
JavaScript: instance of Stefanov's Module Pattern
我遵循了 Stefanov 相当简单的模块模式。一切都很好,直到设计发生巨大变化:我必须生成我的模块的多个实例。
下面是一些简短的示例代码,展示了这种模式的样子:
var MYAPP = MYAPP || {};
MYAPP = (function(){
// private properties
var connector = "connector.php",
my_list = [],
current_item = {},
beforeRender = false;
// private methods
_addCurrentItem = function(amount){
},
// public methods
add = function(amount){
amount += 5;
_addCurrentItem(amount);
}
// public API
return {
add: add
};
}());
仅使用 MYAPP
的一个实例时,一切都很好。但现在我需要更多实例,并发现我无法以这种方式实例化我的模块。 var my_instance = new MYAPP;
不起作用,因为没有构造函数。
使我的模块模式可实例化的最快和最好的方法是什么?
感谢您的帮助和建议!
怎么样:
- 删除自调用
- 保存到不同的变量(如
App
)
- 单独实例化
像这样:
var MYAPP = MYAPP || {};
var App = function(){
// private properties
var connector = "connector.php",
my_list = [],
current_item = {},
beforeRender = false;
// private methods
_addCurrentItem = function(amount){
},
// public methods
add = function(amount){
amount += 5;
_addCurrentItem(amount);
}
// public API
return {
add: add
};
};
MYAPP = new App();
MYOTHERAPP = new App();
return{
初始化:函数(){}}
以上代码有效地实例化了模块。
我遵循了 Stefanov 相当简单的模块模式。一切都很好,直到设计发生巨大变化:我必须生成我的模块的多个实例。
下面是一些简短的示例代码,展示了这种模式的样子:
var MYAPP = MYAPP || {};
MYAPP = (function(){
// private properties
var connector = "connector.php",
my_list = [],
current_item = {},
beforeRender = false;
// private methods
_addCurrentItem = function(amount){
},
// public methods
add = function(amount){
amount += 5;
_addCurrentItem(amount);
}
// public API
return {
add: add
};
}());
仅使用 MYAPP
的一个实例时,一切都很好。但现在我需要更多实例,并发现我无法以这种方式实例化我的模块。 var my_instance = new MYAPP;
不起作用,因为没有构造函数。
使我的模块模式可实例化的最快和最好的方法是什么?
感谢您的帮助和建议!
怎么样:
- 删除自调用
- 保存到不同的变量(如
App
) - 单独实例化
像这样:
var MYAPP = MYAPP || {};
var App = function(){
// private properties
var connector = "connector.php",
my_list = [],
current_item = {},
beforeRender = false;
// private methods
_addCurrentItem = function(amount){
},
// public methods
add = function(amount){
amount += 5;
_addCurrentItem(amount);
}
// public API
return {
add: add
};
};
MYAPP = new App();
MYOTHERAPP = new App();
return{ 初始化:函数(){}}
以上代码有效地实例化了模块。