考虑以下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/