所以我有一个带有类
的javascript文件var Loader = function(){
// loader specific code (scoped)
}
我将在我的其他js文件中实现此类
(function()
{
var loaderInstance = new Loader();
// loaderInstance.callApiMethods();
})();
所以基本上这个Loader类只会在Web应用程序的整个生命周期中实例化一次。
问题:
答案 0 :(得分:0)
如果您确定永远不需要另一个加载器,则可以将其创建为文字对象(直接创建实例),并像其他任何加载器一样导出它。
var loader = {
callApiMethods: function(){
//etc.
}
}
exports = loader;
您还可以使用以编程方式创建对象并将其返回的函数,并且可以通过在运行时传递所需的任何参数将其用作构造函数。
function loader(x, y, z){
var obj = {}
obj.name = x;
obj.callApiMethods = function(){
//do something with `y` or `z` etc
}
return obj;
}
module.exports = loader;
然后您可以使用第二个选项:
var createLoader = require('./filename.js');
//..and then when you need the loader object:
var loaderInstance = createLoader(a,b,c)
// where a,b,c are any runtime arguments you might need
从内存管理的角度来看,这些选项在理论上都更好。
但课程很漂亮!
答案 1 :(得分:0)
1)装载机不需要在一个班级,除非你想要一些范围关闭的好处:
在类中声明loaderInstance,使其本地作用于该类...否则它将是全局范围的,并且可能会干扰其他脚本
2)还有其他选择,但这是最简单的方法。基本上,javascript中的类总是一个可以直接实例化的对象,或者将它分配给带有函数等的变量/返回,并在代码中稍后实例化。
其他一些解决方案可能是像backbonejs这样的框架,它会强制你拥有一个mvc结构 http://backbonejs.org/