为什么new关键字没有创建Router类的唯一实例?
Why does the new keyword not create a unique instance of the Router class?
在这个例子中,为什么new关键字没有创建Router类的唯一实例?你可以看到,我的简单路由器有一个$deferred属性,它被解析了,但即使在创建新类并再次测试状态时,它仍然被解析,而不是在创建新类时重置为"pending"。
var Router = Backbone.Router.extend({
$deferred: new $.Deferred(),
initialize: function () {
}
});
var router1 = new Router({});
$("#results").append(router1.$deferred.state() + "<br>"); //pending
router1.$deferred.resolve();
$("#results").append(router1.$deferred.state() + "<br>"); // resolved
var router2 = new Router({});
$("#results").append(router2.$deferred.state() + "<br>"); //resolved -- should be pending
router2.$deferred.resolve();
$("#results").append(router2.$deferred.state() + "<br>"); //resolved
http://jsfiddle.net/Nv7ep/这是一个更新的小提琴:http://jsfiddle.net/phoenecke/Nv7ep/1/
var Router = Backbone.Router.extend({
initialize: function () {
// add the deferred object to the new instance.
this.$deferred = new $.Deferred();
}
});
当您添加属性时,在extend
中,它被添加到原型中,因此$deferred
被所有实例共享。如果你想为路由器的每个实例提供一个唯一的延迟实例,你应该在initialize
中添加它。
相关文章:
- ES6构造函数返回基类的实例
- KnockoutJS-组件-多个实例
- 为什么无法在TypeScript中导出类实例
- 如何在GoogleWeb工具包(GWT)中从JSNI调用接口(实例化)
- fluxxor向一个flux实例添加一组以上的操作
- 使用jQuery获取Dropzone实例/对象
- "实例范围”;TypeScript类的getter/setter
- 如何在速度模板中获取LiferayPortlet实例id
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- 调用的每个实例的唯一随机数
- 有没有办法获取谷歌浏览器实例的唯一标识符
- ExtJS 4 在存储的几个实例中是唯一记录
- jQuery插件在每个实例上都有唯一的定时器
- 返回数组中value的每个唯一实例,在一个新数组中
- 在实例化对象(使用构造函数)时设置唯一的id
- 为angular指令实例分配自定义的唯一id
- 为什么new关键字没有创建Router类的唯一实例?
- 如何在javascript中创建一个对象的唯一实例
- 如何检测某个唯一的浏览器实例号,或每个""的pid数;窗口";或每";选项卡&q