coffeescript中apply(this,arguments)的等价物是什么?

时间:2012-06-07 10:45:29

标签: coffeescript

在javascript中你会写一些类似的东西:

method.apply(this,arguments);

但是,你怎么把它翻译成coffeescript?:

method.apply(@, arguments)

参数变量有不同的名称吗?

3 个答案:

答案 0 :(得分:17)

使用splats,您可以使用更清洁的coffeescript语法:

caller: ->
  @method arguments...

以上编译为以下Javascript:

caller: function() {
  return this.method.apply(this, arguments);
}

答案 1 :(得分:5)

arguments也可以在咖啡脚本中找到。所以你可以这样做:

method.apply @, arguments

答案 2 :(得分:2)

如果你希望它能像javascript一样工作,你可能会这样做,但是coffeescript对于你可能想要完成的事情有“splats”。以下是coffeescript.org的解释:

gold = silver = rest = "unknown"

awardMedals = (first, second, others...) ->
  gold   = first
  silver = second
  rest   = others

contenders = [
  "Michael Phelps"
  "Liu Xiang"
  "Yao Ming"
  "Allyson Felix"
  "Shawn Johnson"
  "Roman Sebrle"
  "Guo Jingjing"
  "Tyson Gay"
  "Asafa Powell"
  "Usain Bolt"
]

awardMedals contenders...

alert "Gold: " + gold
alert "Silver: " + silver
alert "The Field: " + rest