对于Backbone.js,如何显示Backbone.Model是否继承自Backbone.Events?

时间:2012-10-27 20:00:37

标签: javascript backbone.js

http://addyosmani.github.com/backbone-fundamentals/中,据说

every single one of the following objects inherits from Backbone.Events:

Backbone.Model
Backbone.Collection
Backbone.Router
Backbone.History
Backbone.View

我也可以在backbone.js中找到以下内容:

// Attach all inheritable methods to the Model prototype.
_.extend(Model.prototype, Events, {  ....

但是,我试图通过

来检查继承
Backbone.Model.prototype.__proto__ === Backbone.Events
在Firebug中

,它显示false

Backbone.Model.prototype.__proto__.__proto__

已经是null,意味着原型链的结束。那么如何展示继承呢?

1 个答案:

答案 0 :(得分:2)

您引用的页面不正确,Backbone中的任何内容都不会从Backbone.Events继承。但是,Backbone.Events混合到其他Backbone“类”中。你提到的一些代码:

_.extend(Model.prototype, Events, { ...

没有设置继承,只是将Events混合到Model的原型中,效果类似于:

for k in Events
    Model.prototype[k] = Events[k]

所以只需将Events的方法添加到Model即可。 Backbone document只说了这个:

  

<强> Backbone.Events

     

事件是一个可以混合到任何对象的模块,使对象能够绑定并触发自定义命名事件。

请注意混合术语。

Backbone.Events甚至不是构造函数(它只是一个对象),因此无需继承。