因此,我采用以下解决方案:
以下列方式声明模块:
var namespaceprefix_someModule = new function(){
function privatemethod(){}
this.publicmethod = function(){};
}
我愿意付出5个全局变量的代价。 作为回报,代码可以整齐地划分为不同文件的功能模块, 并具有强大的智力支持。
我想知道是否有人在此提出替代解决方案。
答案 0 :(得分:2)
对于this reason,您不应该对new
运算符使用该模式。相反,使用
var namespaceprefix_someModule = (function(){
function privatemethod(){}
return {
publicmethod: function(){}
};
})();
我不确定,但我认为VS会认出这种模式。
答案 1 :(得分:1)
我最终决定设计代码,以便在转向生产时可以轻松地用.
(点)替换下划线。这样我就可以使用完整的IntelliSense进行开发,最后只有一个全局变量。
在开发过程中,模块如下所示:
namespace_module1 = (function(){
function private(){};
function public(){};
return {
public: public
}
})();
主模块通过将一个模块中的事件与另一个模块的公共函数相关联来充当中介角色。它看起来像:
var namespace = (function(){
var module1 = namespace_module1;
var module2 = namespace_module2;
module1.on('someevent', module2.publicfunction);
})();