使用函数设置对象成员失败
我正在尝试为我正在创建的游戏实现一种多人游戏扩展。 在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
值调用,并且它可能与封闭函数的值不同。