我正在尝试为我正在创建的游戏实现一种多人游戏扩展。在 XMLHttpRequest 之后,返回一个游戏 ID,即多人游戏 session 的 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
可以写入和读取。
这是正确的吗?如果是这样,为什么会这样?
最佳答案
Javascript 没有类,this
的行为与您预期的 C++ 或 Java 背景不同。尝试将您的创建功能更改为:
function() {
var that = this;
$.get(this.baseURL, {'a':'c'}, function(text) {
that.gameID = parseInt(text);
});
}
关键点是每个 function() 都是用特定的 this
值调用的,它可能与封闭函数的值不同。
关于javascript - 使用函数设置对象成员失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4828695/