JS TypeError:无法读取未定义的属性“map”

时间:2014-02-13 07:28:33

标签: javascript runtime-error

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

调用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 个答案:

答案 0 :(得分:1)

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

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.
};