0

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__

is already null,意味着原型链的末端。那么如何显示继承呢?

4

1 回答 1

2

您引用的页面不正确,Backbone 中没有任何内容继承自Backbone.Events. 但是,Backbone.Events混入了其他 Backbone “类”。您提到的代码位:

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

不是设置继承,只是混入Events' Modelsprototype 中,效果类似这样:

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

所以它只是简单地将Events's 方法添加到Model. 骨干文件只说:

Backbone.Events

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

注意术语中的混合。

Backbone.Events甚至不是构造函数(它只是一个对象),所以没有什么可以继承的。

于 2012-10-27T20:29:48.387 回答