gpt4 book ai didi

jquery - BackboneJS 中的路由器实例不同

转载 作者:行者123 更新时间:2023-12-01 04:49:18 27 4
gpt4 key购买 nike

在 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 ,而直接调用它会设置 thisRouter 类本身。

因为在测试方法时您几乎肯定不想使用 Router 类作为 this,所以您可能想要做的只是实例化一个Rotuer 正确地添加到您的设置代码中。

关于jquery - BackboneJS 中的路由器实例不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23631915/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com