CoffeeScript:使用(splat…)参数重写方法
我在尝试将splat转发给超级构造函数时遇到了麻烦。大概是这样的:CoffeeScript:使用(splat…)参数重写方法,coffeescript,Coffeescript,我在尝试将splat转发给超级构造函数时遇到了麻烦。大概是这样的: class Mom constructor: (vars...) -> [code] class Son extends Mom constructor: (vars...) -> super(???) [code] 问题是: 我如何调用超级构造函数来传递子收到的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