在CoffeeScript中,我希望能够在不调用它的情况下将超级方法分配给变量。
class a
one: ->
class b extends a
one: ->
mySuper = super
但是,执行以下操作实际上会调用super方法而不是返回它 - 这里是已编译的代码:
return mySuper = b.__super__.one.apply(this, arguments);
如何将超级方法实际分配给变量而不是调用它?
我知道我能做到:
class b extends a
one: ->
mySuper = b.__super__.one
但它并不干净。
答案 0 :(得分:4)
Coffee脚本没有为此用例提供语法糖。所以自己动手吧。
我会这样做:
class B extends A
one: ->
mySuper = A::one
mySuper.call this # calls the saved super method
::
是prototype
的简写。所以A::one
编译为A.prototype.one
,这是你的超级方法实际上的位置。
但这对我来说似乎是个红旗。我想不出这是一个好主意的情况。我打赌它不是语言的一部分,因为如果你正确地设计你的课程,你就不应该这样做。你说你想要干净的东西,但你想在这里做的事我根本不会考虑清洁。