考虑以下CoffeeScript类:

class Event
    trigger : (args...) =>
        ...

    bind : (args...) =>
        ...

用例为:
message_received = new Event()
message_received.bind(alert)
message_received.trigger('Hello world!') # calls alert('Hello world')

有没有一种方法可以编写Event类,使.trigger(...)调用具有“可调用对象”快捷方式:
message_received('Hello world')  # ?

谢谢!

最佳答案

您需要从构造函数返回一个函数,该函数将使用当前实例的属性进行扩展(该属性又从Event.prototype继承)。

class Event
    constructor : ->
        shortcut = -> shortcut.trigger(arguments...)
        for key, value of @
            shortcut[key] = value
        return shortcut

    trigger : (args...) =>
        ...

    bind : (args...) =>
        ...

Compiled result

关于javascript - 可调用的CoffeeScript类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12894056/

10-12 12:25