gpt4 book ai didi

coffeescript - Coffeescript 中的静态方法和继承

转载 作者:行者123 更新时间:2023-12-04 05:12:16 28 4
gpt4 key购买 nike

我一直在阅读一些关于 coffeescript 的继承模型的内容,我感觉自己正处于一场我真的不理解的意识形态辩论的边缘。所以,我会非常高兴地发现我只是以错误的方式做事。

基本上我正在做的是编写一组小部件,除其他外,它们需要处理其 DOM 元素上的事件。我认为解决此问题的一个好方法是拥有一个将被调用一次的类方法,以委托(delegate)小部件可能需要的所有事件。小部件基类可能有一些简单的单击处理程序,而子类可能会添加一些鼠标悬停处理程序或额外的单击处理程序。

但是,看来我不应该尝试做相当于调用 super() 的操作。在静态方法中。存在一种解决方法,( this.__super__.constructor.METHODNAME() 但我看到很多建议说这不是做我想做的事情的最佳方法。有没有人对我应该如何构建这段代码有任何见解? 继续使用解决方法,还是将所有委托(delegate)放到一个完全不同的地方?我真的不能把它放在原型(prototype)中,因为我不一定有一个实例来调用该方法(或者我基本上仍然可以调用静态上下文中原型(prototype)上的方法,例如将 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()

谢谢你的帮助。

最佳答案

我建议更换

this.__super__.constructor.delegateEvents()


Widget.delegateEvents()

不需要尝试使用 super 调用静态方法(并且没有多大意义)

关于coffeescript - Coffeescript 中的静态方法和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6689519/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com