gpt4 book ai didi

javascript - 如何将 socket.io(在 nodejs 中)的事件处理程序绑定(bind)到我自己的范围?

转载 作者:数据小太阳 更新时间:2023-10-29 05:42:25 25 4
gpt4 key购买 nike

我在我的 nodejs 服务器中使用“socket.io”。有没有办法在我的类/模块(在浏览器中)的范围内运行已注册的事件函数?

...
init: function() {
this.socket = new io.Socket('localhost:3000'); //connect to localhost presently
this.socket.on('connect', this.myConnect);
},
myConnect: function() {
// "this.socket" and "this.f" are unknown
// this.socket.send({});
// this.f();
},
f: function() {
// ...
}
...

最佳答案

认为 V8 支持“bind()”函数:

this.socket.on('connect', this.myConnect.bind(this));

对“绑定(bind)”的调用将返回一个函数,该函数将调用您的 函数,这样this 将设置为您传递的参数(在本例中, this 来自调用该“init”函数的上下文)。

编辑 — “bind()”在 Chrome 的 Function 原型(prototype)中,所以我想它在 node 中运行良好。

以下是您可以在浏览器(具有可用功能的浏览器,如 Chrome)中尝试的操作:

 var f = (function() { alert(this); }).bind("hello world");
f();

关于javascript - 如何将 socket.io(在 nodejs 中)的事件处理程序绑定(bind)到我自己的范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5221978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com