Coffeescript中的静态方法和继承

Jer*_*rne 7 coffeescript

我一直在阅读有关coffeescript继承模型的一些内容,我感觉我正处于意识形态辩论的边缘,我真的不明白.所以,我很高兴发现我只是以错误的方式做事.

基本上我正在做的是编写一组小部件,除其他外,需要处理其DOM元素上的事件.我认为一个好的方法是使用一个类方法,该方法将被调用一次,以委托小部件可能需要的所有事件.基本窗口小部件类可能有一些简单的单击处理程序,而子类可能会添加一些鼠标悬停处理程序或额外的单击处理程序.

但是,似乎我不应该尝试super()在静态方法中进行相同的调用.有一种解决方法存在,(this.__super__.constructor.METHODNAME()但我已经看到很多建议,这不是我正在尝试做的最佳方式.有没有人对我应该如何构造这些代码有任何见解?继续使用解决方法,或者将所有委托放在一个完全不同的地方?我不能只把它放在原型中,因为我不一定要有一个实例来调用方法(或者我基本上可以调用方法来自静态上下文的原型,比如放入SwatchableWidget.prototype.delegateEvents()onload函数还是什么?

这里有一些代码来说明我在说什么:

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()
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Mar*_*sel 1

听起来您想要一种不同类型的继承模型,其中某种类型的每个继承函数(“父调用”)将遍历继承树并使用相同的名称调用其所有父级。

您可以按照您编写的方式手动调用每个子级中的任何直接父级函数。然后,它将沿着继承链向上浮动到您指定此类关系的任何位置。

我将构造函数中的父委托调用绑定到当前类函数

delegateparents => 
  #call any parent class methods
Run Code Online (Sandbox Code Playgroud)