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

标签 javascript jquery

我正在尝试为我正在创建的游戏实现一种多人游戏扩展。在 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/

相关文章:

javascript - 如何按顺序对 svg 动画进行计时?

javascript - jQuery 求和或相乘值始终没有事件触发

基于给定时间的Javascript警报窗口

javascript - 使用 Json 和 Jquery 的 Asp.net MVC4 中的级联下拉列表不填充

javascript - stick header 导致页面短时跳转

javascript - 如何从 jquery 回调中调用对象方法

javascript - 如何将 firebase firestore 与我本地的 firebase 模拟器套件连接?

javascript - 如何使用 bootstrap-select 动态设置多个值

jquery - 如何让所有 jquery 元素在 Joomla 中协同工作

javascript - 如何在 Javascript 中从左到右到从右到左替换字符串的元素?