使用函数设置对象成员失败

我正在尝试为我正在创建的游戏实现一种多人游戏扩展。 在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既可以写入也可以读取。

这是正确的,如果是这样,为什么会这样?

Javascript没有类,并且this不像您期望的那样来自C ++或Java背景。 尝试将您的创建function更改为:

 function() { var that = this; $.get(this.baseURL, {'a':'c'}, function(text) { that.gameID = parseInt(text); }); } 

关键点是每个function()都使用特定的this值调用,并且它可能与封闭函数的值不同。