【问题标题】:JS TypeError: Cannot read property 'map' of undefinedJS TypeError:无法读取未定义的属性“地图”
【发布时间】:2014-02-13 15:42:52
【问题描述】:

我在以下代码中收到 “无法读取未定义的属性” 错误。

发生的情况是调用initFromServer() 从服务器获取模型。但最终发生的是,当调用init() 时,参数模型是未定义的。使用console.log 来确定发生了什么似乎在确定模型未定义之前它永远不会到达Proxy.getModel() 函数。

我不完全确定发生了什么。还有很多其他的功能,还有什么我没有插入的。希望这是有道理的。

ClientModel.prototype.initFromServer = function(success) {
    this.getProxy().getModel(this.init(), success());
}

ClientModel.prototype.init = function(model) {  
    this.setMap(new catan.models.Map(model.map.radius));    
};

在我们的代理文件中:

Proxy.prototype.getModel = function(update, success) {
    jQuery.get("/game/model", function(data) {
                    update(data);
                    success(data);
    });
};

【问题讨论】:

  • 所以你已经定义了一个带有 1 个参数的 init() 方法,并且在调用它时不要传递任何参数。

标签: javascript runtime-error


【解决方案1】:

当您在 initFromServer() 中调用 init() 时,您不会传递任何参数。

init() 函数中,您访问model 作为第一个参数……

ClientModel.prototype.initFromServer = function(success) {
    this.getProxy().getModel(this.init(), success());
                                       |
                                       +---- No Argument.
}

ClientModel.prototype.init = function(model) {
                                       |
                                       v
    this.setMap(new catan.models.Map(model.map.radius));
                                       |
                                       +----> Ups.
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-06
    • 2017-11-25
    • 1970-01-01
    • 2021-02-01
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    相关资源
    最近更新 更多