在 BackboneJS 的 router.js 中使用 this.initialize();
和
require(['router'],function(Router) {
router = Router;
router.intialize();
});
如何获取相同的实例?
谁能帮帮我,先谢谢了
编辑:
我想实现代码覆盖率单元测试(Jasmine.js 1.3.1)。
为此,我需要将路由器(与在没有代码覆盖工具的情况下运行应用程序时所拥有的实例完全相同)实例传递到我的 Jasmine 规范的 .js 文件。
如果不可能在规范执行期间获取相同的实例,请告诉我如何使用不同的方法获取实例。
如果您在此转换过程中需要任何说明,请告诉我。
提前致谢。
最佳答案
区别在于构造函数
。主干类都有一个在实例化该类时运行的方法。当您执行 new Backbone.Router()
时,constructor
方法就是调用您的 initialize
方法的方式。
正如您所见,Router
的构造函数
:
var Router = Backbone.Router = function(options) {
options || (options = {});
if (options.routes) this.routes = options.routes;
this._bindRoutes();
this.initialize.apply(this, arguments);
};
调用initialize
和实例化路由器之间的主要区别在于,当您实例化它时,路由是绑定(bind)的。
嗯,这是主要的 Backbone 区别。调用 new A.B()
和 A.B()
之间还存在 Javascript 差异,即 new
关键字创建一个新对象并设置它作为 constructor
/initialize
函数中的 this
,而直接调用它会设置 this
到 Router
类本身。
因为在测试方法时您几乎肯定不想使用 Router
类作为 this
,所以您可能想要做的只是实例化一个Rotuer
正确地添加到您的设置代码中。
关于jquery - BackboneJS 中的路由器实例不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631915/