2013-03-07 25 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