私はcoffeescriptの継承モデルについて少し読んできました。私は私が実際に理解していないイデオロギー論争のフリンジにいると感じています。だから、私はちょうど間違ったやり方で物事をしていることを完全に幸せに感じるだろう。静的メソッドと継承in Coffeescript
私がやっていることは、とりわけ、DOM要素のイベントを処理する必要のあるウィジェットのセットを書くことです。私はこのことについて良い方法は、ウィジェットが必要とする可能性があるすべてのイベントを委任するために、一度呼び出されるクラスメソッドを持つことだと思っていました。基本ウィジェットクラスにはいくつかの単純なクリックハンドラがあり、サブクラスにはいくつかのマウスオーバーハンドラや余分なクリックハンドラが追加されることがあります。
しかし、静的メソッド内でsuper()
を呼び出すのと同じことをやろうとはしていないようです。回避策があります(this.__super__.constructor.METHODNAME()
ですが、これは私がやろうとしていることを実行するための最良の方法ではないという多くの提案を見てきました。回避策を使用するか、すべてのデリゲートを全く別の場所に置くのですか?私は必ずしもプロトタイプに貼り付けることはできません。メソッドを呼び出すインスタンスを必ずしも持っていないからです(または、 ?すべてのHELのため
class Widget
@testProp: "ThemeWidget"
@delegateEvents: ->
console.log "delegate some generic events"
class SwatchableWidget extends Widget
@testProp2 = "SwatchWidget"
@delegateEvents: ->
console.log "delegate some specific swatchable widget events"
this.__super__.constructor.delegateEvents()
Widget.delegateEvents()
SwatchableWidget.delegateEvents()
ありがとう:onloadイベント機能や何かにSwatchableWidget.prototype.delegateEvents()
を置くような静的な文脈から、プロトタイプ、上
ここで私が話しているものを説明するためのコードのビットですp。
をコンストラクタで親のデリゲートの呼び出しを結合するであろうが、その後すべての派生クラスは、明示的の親クラスのデリゲートのイベントを、それを呼び出すために必要とされるであろう。親クラス名が変更された場合は、代行イベントや同様の呼び出しを手動で更新する必要があります。私自身の答えを読んで、私はまだ元の質問の著者が示唆するものを超えて、親の名前付き機能のような自動呼び出しのきれいな方法を知らない。 –