假设我有一个这样的对象(使用coffeescript):
class Client
constructor: (socket) ->
@id = socket.id
@socket = socket
# some other initialization here...现在,每当@socket发出一些东西时,我希望客户端对象通过发出相同的事件来模仿它。我想不出比观察@socket发出的每个事件并在客户端类中手动发出它更好的方法了,例如:
class Client
constructor: (socket) ->
# ...
@socket.on('disconnection', onDisconnect)
@socket.on('message', onMessage)
onDisconnect: ->
this.emit('disconnection')
onMessage: (data) ->
this.emit('message', data)我知道一定有更好的方法,但我不确定该怎么做。
发布于 2012-09-08 23:06:07
像这样的东西?(未经测试。)
class Client
constructor: (socket) ->
# ...
for event in ['disconnect', 'message']
@socket.on(event, => @emit(event, arguments))发布于 2012-09-09 07:03:50
Monkey patch @socket对象发射:
class Client
constructor: (socket) ->
@reEmit(socket)
reEmit: (ee)->
oldEmit = ee.emit
ee.emit = (args...)=>
@emit(args)
oldEmit.apply(ee, args)https://stackoverflow.com/questions/12331338
复制相似问题