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__

はすでにnull、プロトタイプチェーンの終わりを意味します。では、継承をどのように示すことができますか?

4

1 に答える 1

2

参照しているページが正しくなく、Backboneの何もから継承していませんBackbone.Events。ただし、Backbone.Events他のバックボーン「クラス」には混在しています。あなたが言及するコードのビット:

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

は継承を設定していません。それは単にのプロトタイプに混合Eventsされており、効果は次のようになります。Model

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

Eventsしたがって、のメソッドをに追加するだけModelです。バックボーンドキュメントには、次のように書かれているだけです。

Backbone.Events

イベントは、任意のオブジェクトに混在させることができるモジュールであり、オブジェクトにカスタムの名前付きイベントをバインドしてトリガーする機能を提供します。

用語が混在していることに注意してください。

Backbone.Eventsコンストラクター関数ではないので(単なるオブジェクトです)、継承するものは何もありません。

于 2012-10-27T20:29:48.387 に答える