我正在尝试为我正在创建的游戏实现一种多人游戏扩展。在XMLHttpRequest之后,返回游戏ID,即多人游戏会话的ID。
我正在使用以下代码,其中Multiplayer是一个静态类:
var Multiplayer = {
baseURL: 'http://127.0.0.1:8888/m',
gameID: -1,
create:
function() {
$.get(this.baseURL, {'a':'c'}, function(text) {
this.gameID = parseInt(text);
});
}
}
失败了,因为似乎无法使用this.gameID = parseInt(text)
。当我将其更改为Multiplayer.gameID = parseInt(text)
时,它就像一个魅力。
似乎this.gameID
未定义,而Multiplayer.gameID
可以写入和读取。
这是否正确?如果是这样,为什么会这样?
答案 0 :(得分:2)
Javascript没有类,this
的行为与预期的C ++或Java背景不符。尝试将您的创建功能更改为:
function() {
var that = this;
$.get(this.baseURL, {'a':'c'}, function(text) {
that.gameID = parseInt(text);
});
}
关键点是每个函数()都使用特定的this
值调用,并且它可能与封闭函数的值不同。