Я немного читал о модели наследования 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()
Спасибо за любую помощь.