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

时间:2011-01-28 13:24:23

标签: javascript jquery

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

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

1 个答案:

答案 0 :(得分:2)

Javascript没有类,this的行为与预期的C ++或Java背景不符。尝试将您的创建功能更改为:

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

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