在过去一小时左右,我一直在努力让名称空间与backbone.js一起使用。
我看过:How do I declare a namespace in JavaScript?
我尝试了所有方法。这是问题所在:
Backbone.Controller希望通过constructur(“new keyword”)初始化,因为否则将不会设置Backbone.history。这是我试图放入命名空间的代码,例如“Site.Controllers”
var MainController = Backbone.Controller.extend({
routes: {
"help": "help", // #help
},
help: function(){}
});
var ws = new MainController
每当我尝试将MainController放入某个命名空间时,backbone.js会抱怨MainController不是构造函数 - 当然它确实如此,因为似乎没有任何方法可以使用构造函数创建名称空间“tree” 。如果你们想要,我可以列出我尝试的所有方法,但它与上面提供的链接完全相同。我没有尝试将它放入封闭中,因为这被认为非常慢。
答案 0 :(得分:1)
var namespace = {
MainController: Backbone.Controller.extend({ ... }),
HelpController: Backbone.Controller.extend({ ... }),
...
};
我对你想要达到的目标感到困惑。创建命名空间的几乎失败证明方法是:
var namespace = (function() {
...
return {
...
};
})();
同样是封闭确实更慢。但除非你创造数百万次关闭,否则我不会担心这一点。