Я немного читал о модели наследования coffeescript, и у меня такое чувство, что я нахожусь на обочине идеологической дискуссии, которую я действительно не понимаю. Итак, я был бы совершенно счастлив узнать, что я просто делаю что-то неправильно.
По сути, я пишу набор виджетов, которые, помимо прочего, должны обрабатывать события в своих элементах DOM. . Я подумал, что хороший способ сделать это - иметь метод класса, который будет вызываться один раз, чтобы делегировать все события, которые могут понадобиться виджету. Базовый класс виджета может иметь несколько простых обработчиков щелчков, в то время как подкласс может добавлять к этому некоторые обработчики наведения указателя мыши или дополнительные обработчики щелчков.
Однако, похоже, я не должен пытаться выполнить эквивалент вызова super ()
внутри статического метода. Существует обходной путь ( this .__ super __. Constructor.METHODNAME ()
, но я видел много предложений, что это не лучший способ делать то, что я пытаюсь сделать. Есть ли у кого-нибудь представление о том, как мне структурировать этот код? Продолжайте использовать обходной путь или перенести все делегирование в совершенно другое место? Я не могу просто вставить его в прототип, так как у меня не обязательно будет экземпляр для вызова метода (или я могу по-прежнему вызывать метод прототипа из статического контекста, например, помещая SwatchableWidget.prototype.delegateEvents ()
в функцию загрузки или что-то в этом роде?
Вот немного кода, чтобы проиллюстрировать то, о чем я говорю:
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()
Спасибо за любую помощь.