如何通过自定义信息传递函数?

时间:2016-12-21 07:44:16

标签: javascript node.js function socket.io undefined

我正在使用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);

所以我猜测,一旦我通过了这个功能,就会失去对它所在类的引用。

为什么会这样? 如何让函数包含自定义信息?

1 个答案:

答案 0 :(得分:0)

在javascript中,this是基于调用上下文定义的。 在你的情况下,你传递的函数,这只是MyClass的属性。执行该函数时,this会根据您调用它的方式进行更改。

如果您想继续引用该类,请使用bind socket.on('disconnect', myInstance.myFunction.bind(myInstance));