将此传递给回调函数?

时间:2014-03-31 02:52:48

标签: javascript node.js

这是我的Java Script对象。

HelloObject(server) {
    this.server = server;
    this.socketio = require("socket.io");
}

HelloObject.prototype = {
    constructor: HelloObject,
    listen: function() {
        this.serverProcess = this.socketio.listen(this.server);
        this.serverProcess.sockets.on('connection', this.connect);
    },
    connect: function(socket) {

    }
}

// I am invoking the object

var socketServer = new HelloObject(server)
// Meaning "this" will refer to sockerServer
socketServer.listen()

很抱歉可能是一个愚蠢的问题,我是javascript的新手。 我需要通过"这个"到this.connect函数。 我已经尝试过this.connect.apply(this)以及最终发生的事情是我丢失了套接字对象。

2 个答案:

答案 0 :(得分:2)

在回调中,如果你想将connect绑定到当前对象(this),那么你需要使用Function.prototype.bind函数,就像这样

this.serverProcess.sockets.on('connection', this.connect.bind(this));

答案 1 :(得分:1)

您可以使用JavaScript闭包:

var $this = this;
this.serverProcess.sockets.on('connection',function () {
    $this.connect();
});