0
我的客戶「下課」看起來是這樣的:超出範圍的回調函數
var Client = (function() {
function Client(socket)
{
this.socket = socket;
this.country_code = null;
var that = this;
this.socket.on('message', function(data) {
var r = JSON.parse(data);
switch (r.action) {
case 'init':
that.country_code = r.country_code;
break;
}
});
}
Client.prototype.message_handler = function(data)
{
};
return Client;
})();
我利用websocket.io模塊從客戶端接收消息。現在,上面的代碼工作,但我真的很想有Client.prototype.message_handler
,使構造函數應該是這樣的:
function Client(socket)
{
this.socket = socket;
this.country_code = null;
this.socket.on('message', this.message_handler);
}
然而,問題是,現在在MESSAGE_HANDLER功能
Client.prototype.message_handler = function(data)
{
var r = JSON.parse(data);
switch (r.action) {
case 'init':
this.country_code = r.country_code; // Doesn't work.
break;
}
};
this
未解析爲客戶級別。有沒有反正通過或this
通過this.socket.on('message', this.message_handler)
功能?這樣,我可以在不同的處理程序中使用繼承。
謝謝,但不會工作。 console.log(this.country_code)裏面的message_handler仍然給未定義... E:明白了:this.socket.on('message',this.message_handler.bind(this)); – nhaa123
我會更新我的答案,以便其他人看到可以在那裏工作的東西,但我對爲什麼舊版本無法正常工作感到困惑。嗯... – disatisfieddinosaur