CoffeeScript:使用(splat…)参数重写方法

CoffeeScript:使用(splat…)参数重写方法,coffeescript,Coffeescript,我在尝试将splat转发给超级构造函数时遇到了麻烦。大概是这样的: class Mom constructor: (vars...) -> [code] class Son extends Mom constructor: (vars...) -> super(???) [code] 问题是: 我如何调用超级构造函数来传递子收到的splat参数?超级变量…可能就是您要寻找的。超级非常神奇 如果将其编译为对超级构造函数

我在尝试将splat转发给超级构造函数时遇到了麻烦。大概是这样的:

class Mom
    constructor: (vars...) ->
        [code]

class Son extends Mom
    constructor: (vars...) ->
        super(???)
        [code]
问题是:


我如何调用超级构造函数来传递子收到的splat参数?

超级变量…
可能就是您要寻找的。

超级
非常神奇

如果将其编译为对超级构造函数的调用,并转发所有参数,这正是本例中所需的:)


你什么都不用做。构造函数实际上只使用
参数
javascript变量。这意味着,您可以让对
super
的调用保持原样。

您也可以调用
super
而不使用任何参数(也不使用参数),以使用传递给子构造函数的完全相同的参数来调用超类的实现。@IanHenry这是一个很好的建议,但是请记住,不带参数的super使用
arguments
变量,因此它实际上将使用最接近范围的参数(或函数调用)调用它。所以用这种方式从回调调用super会以非常奇怪的方式失败。@AaronDufour哇,很高兴知道。对我来说这听起来像是咖啡脚本中的一个错误,但对贾什凯纳斯来说显然不是。。。
class Mom
  constructor: (vars...) ->
    console.log "constructing Mom with #{vars}"

class Son extends Mom
  constructor: (vars...) ->
    super

new Son 'a', 'b', 'c' 
# Output: constructing Mom with a,b,c