2013-03-07 36 views

回答

2

super是超级神奇的。

如果你just write super它将编译向超构造函数转发的所有参数,这就是你在这种情况下,想要的东西:)

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 
3

super vars...可能是你在找什么。

+4

你也可以调用没有参数(也没有parens)的'super'来调用超类的实现,它的参数和传递给子构造函数的参数完全相同。 – 2013-03-07 21:29:23

+1

@IanHenry良好的建议,但请记住,没有参数的超级用户使用'arguments'变量,因此它实际上会使用最接近的作用域(或函数调用)的参数来调用它。所以从这种方式调用超级回调将会以非常奇怪的方式失败。 – 2013-03-08 04:30:47

+0

@AaronDufour哇,很高兴知道。这听起来像CoffeeScript中的一个bug,但显然不适用于jashkenas ... https://github.com/jashkenas/coffee-script/issues/1606 – 2013-03-08 15:55:48

0

电话您不需要做任何事情。构造函数实际上只使用了arguments JavaScript变量。这意味着,您可以按照原样拨打super