如何将super方法分配给变量而不在CoffeeScript中调用它?

如何将super方法分配给变量而不在CoffeeScript中调用它?,coffeescript,Coffeescript,在CoffeeScript中,我希望能够将super方法分配给变量,而无需调用它 class a one: -> class b extends a one: -> mySuper = super 但是,执行以下操作实际上会调用超级方法,而不是返回它-以下是编译后的代码: return mySuper = b.__super__.one.apply(this, arguments); 如何将超级方法分配给变量而不是调用它 我知道我能做到: class b ext

在CoffeeScript中,我希望能够将super方法分配给变量,而无需调用它

class a
  one: ->

class b extends a
  one: ->
    mySuper = super
但是,执行以下操作实际上会调用超级方法,而不是返回它-以下是编译后的代码:

return mySuper = b.__super__.one.apply(this, arguments);
如何将超级方法分配给变量而不是调用它

我知道我能做到:

class b extends a
  one: ->
    mySuper = b.__super__.one

但是它没有那么干净。

Coffee脚本没有为这个用例提供语法糖。所以你自己做吧

我会这样做:

class B extends A
  one: ->
    mySuper = A::one
    mySuper.call this # calls the saved super method

是原型的缩写。所以
A::one
编译成
A.prototype.one
,这就是超级方法的实际位置



但这对我来说似乎是个危险信号。我想不出这是个好主意。我敢打赌,它不是语言的一部分,因为如果你正确地设计了你的类,你不应该需要它。你说你想要干净的东西,但是你想在这里做的事情我根本不考虑干净。

一些咖啡脚本变体改变了<代码>超级>代码>作为参考,而不是命令。你为什么要这么做?可能有更好的办法。您能发布更完整的代码吗?用例是这样我可以在函数中作为参数传递super