Статические методы и наследование в Coffeescript

Я немного читал о модели наследования 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()

Спасибо за любую помощь.

7
задан Jeremy Warne 14 July 2011 в 06:55
поделиться