在此代码中,第 15 行 “this”指针指的是套接字而不是我的对象网络。我应该怎么做才能真正获取网络对象?很抱歉这个“菜鸟”问题,但我在谷歌上搜索了一段时间,我什至不知道该输入什么来找到答案。
var Network = function(ip, port){
this.host = "ws://"+ip+":"+port;
this.socket = new WebSocket(this.host);
this.socket.binaryType = "arraybuffer";
var ByteBuffer = dcodeIO.ByteBuffer;
this.socket.onopen = function(){
console.log('Connected to the WebSocket server');
};
this.socket.onmessage = function(e){
var bytearray = new Uint8Array(e.data);
switch(bytearray[0])
{
case 2: this.handleLoginAnswer(bytearray); break; //line 15
default:
alert("received a wrong packet")
}
};
this.handleLoginAnswer = function(packet){
var bytearray = new Uint8Array(e.data);
var reader = ByteBuffer.wrap(bytearray);
var opcode = reader.readUint8();
if(opcode != 2)
return;
var result = reader.readUint8();
switch(result){
case 1: displayValidate("Sucessfully registered"); break;
case 2: displayError("Username is already taken"); break;
case 3: displayError("Email is already taken"); break;
}
function displayValidate(message){
$("#register-messagebox").html("<div class=\"alert-message\" style=\"background-color:#27ae60;\">" + message + "</div>");
}
function displayError(error){
$("#register-messagebox").html("<div class=\"alert-message\" style=\"background-color:#e74c3c;\">" + error + "</div>");
}
}
}
最佳答案
放置:
var self = this; // or other name to suit
当您需要该对象时,请参阅self
。
关于javascript - 获取对象内部的正确函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22331827/