如何在不在CoffeeScript中调用它的情况下将super方法分配给变量?

时间:2013-07-24 22:51:19

标签: coffeescript

在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

但它并不干净。

1 个答案:

答案 0 :(得分:4)

Coffee脚本没有为此用例提供语法糖。所以自己动手吧。

我会这样做:

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

Example

::prototype的简写。所以A::one编译为A.prototype.one,这是你的超级方法实际上的位置。


但这对我来说似乎是个红旗。我想不出这是一个好主意的情况。我打赌它不是语言的一部分,因为如果你正确地设计你的课程,你就不应该这样做。你说你想要干净的东西,但你想在这里做的事我根本不会考虑清洁。