首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Node.js中,如何使父对象发出所有子对象的事件?

在Node.js中,如何使父对象发出所有子对象的事件?
EN

Stack Overflow用户
提问于 2012-09-08 21:55:18
回答 2查看 519关注 0票数 1

假设我有一个这样的对象(使用coffeescript):

代码语言:javascript
复制
class Client
  constructor: (socket) ->
    @id     = socket.id
    @socket = socket
    # some other initialization here...

现在,每当@socket发出一些东西时,我希望客户端对象通过发出相同的事件来模仿它。我想不出比观察@socket发出的每个事件并在客户端类中手动发出它更好的方法了,例如:

代码语言:javascript
复制
class Client
  constructor: (socket) ->
    # ...
    @socket.on('disconnection', onDisconnect)
    @socket.on('message', onMessage)

  onDisconnect: ->
    this.emit('disconnection')

  onMessage: (data) ->
    this.emit('message', data)

我知道一定有更好的方法,但我不确定该怎么做。

EN

回答 2

Stack Overflow用户

发布于 2012-09-08 23:06:07

像这样的东西?(未经测试。)

代码语言:javascript
复制
class Client

  constructor: (socket) ->
    # ...
    for event in ['disconnect', 'message']
      @socket.on(event, => @emit(event, arguments))
票数 0
EN

Stack Overflow用户

发布于 2012-09-09 07:03:50

Monkey patch @socket对象发射:

代码语言:javascript
复制
class Client
  constructor: (socket) ->
    @reEmit(socket)

  reEmit: (ee)->
    oldEmit = ee.emit
    ee.emit = (args...)=>
      @emit(args)       
      oldEmit.apply(ee, args)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12331338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档