获取调用对象

时间:2017-11-20 21:01:51

标签: javascript node.js typescript

我正在使用节点中的websocket,我正在尝试实现一个broadcast方法,该方法将向所有客户端发送消息,但发送消息的客户端除外。

要做到这一点,我需要知道

export class WebSocketRoom {

  private _clients: WebSocketConnection[] = []
  public get clients(): WebSocketConnection[] { return this._clients }

  public broadcast(event: string, message: any) {
    this.clients.forEach(client => {
      client.emit(event, message)
    })
    return this
  }
}

要访问方法broadcast,请执行以下操作:

class Test extends Module {
  public constructor(client: WebSocketConnection) {
    super(client)

    let room = new WebSocketRoom('hi')
    room.broadcast('cool', 'sweet')

  }
}

我尝试执行WebSocketRoom.caller的控制台日志,但这给了我这个错误:

  

TypeError:'caller'和'arguments'是受限制的函数属性,在此上下文中无法访问。

有没有办法可以在broadcast方法中访问调用broadcast的对象而不将其作为参数传递?

this.clients.forEach(client => {
  if(client == sender) return
  client.emit(event, message)
})

旁注

在C#中,它是这样完成的:

public static void MyMethod(this GameObject obj, int var1, int var2) {
    obj.add(var1, var2)
}

MyMethod(1,2)

正如你所看到的,obj在被调用时没有传入。

0 个答案:

没有答案