使用参数调用可变参数函数

Calling varargs function with arguments

当我有一个功能(我无法更改)时:

trigger: (evtType, args...) ->
    # ... find callback based on evtType
    callback.apply(this, args)

是否有更简洁的调用方式,并且仍能获得与此相同的结果:

    open: ->
        @trigger.apply(@, ['beforeOpen'].concat Array::slice.call(arguments, 0))

是的,splat 也适用于 calling a function:

CoffeeScript provides splats ..., both for function definition as well as invocation, making variable numbers of arguments a little bit more palatable.

您可以使用 arguments...:

open: ->
    @trigger('beforeOpen', arguments...)

CoffeeScript 会将其转换为常见的 apply/concat/slice 丑陋。