我正在使用node.js(socket.io) 让 socket.on()为每个加入的客户端使用唯一的回调函数会很棒。
我目前的做法:
我有一个非常基本的javascript类(包含函数和变量):
function MyClass () {
this.theIndex = 7;
this.myFunction= function (){
console.log("theIndex : " + this.theIndex);
};
}
它的实例:
var myInstance = new MyClass ();
我的问题是,当我将其作为参数传递时,它会记录" theIndex:undefined "。
socket.on('disconnect', myInstance.myFunction);
所以我猜测,一旦我通过了这个功能,就会失去对它所在类的引用。
为什么会这样? 如何让函数包含自定义信息?
答案 0 :(得分:0)
在javascript中,this
是基于调用上下文定义的。
在你的情况下,你传递的函数,这只是MyClass的属性。执行该函数时,this
会根据您调用它的方式进行更改。
如果您想继续引用该类,请使用bind socket.on('disconnect', myInstance.myFunction.bind(myInstance));