为什么这个对象突然未定义?

时间:2012-04-24 18:30:42

标签: javascript jquery json object undefined

这是我的JavaScript代码:

var Model =
{
    get: function(id)
    {
        return this.data[id];
    },

    data: {},

    init: function()
    {   
        var self = this;

        $.getJSON(urlToServer, function(data)
        {
            $.each(data, function(i, object)
            {
                self.data[object.id] = object;
                console.log(object.id); // output is: 1, then 2, then 3
            });
        });
    }
};

Model.init();
console.log(Model); // output is the initialized object with children objects 1, 2, 3
console.log(Model.get(1)); // output is undefined

正如您从控制台输出中看到的那样,我在评论中看到,一切正常,直到最后一行代码。我定义了一个Model并使用服务器提供的一些JSON对象对其进行初始化。但突然间,当我尝试通过get()方法访问单个子对象时,模型似乎未定义。

我只是不明白,请帮助我。

感谢。

3 个答案:

答案 0 :(得分:3)

查看您使用的示例代码,Model.get(1)将始终返回undefined。

$。getJSON是一个不一定立即返回的AJAX调用(称为异步)。您将需要使用您提供给$ .getJSON的回调来触发任何逻辑,具体取决于Model.get(1),否则它将保持未定义。

答案 1 :(得分:2)

$.getJSON是异步请求,您必须等待响应才能调用Model.get()

答案 2 :(得分:0)

您尝试检索对象的字段“142”。我猜你从json只得到“1”,“2”和“3”id?如果我是对的,那么函数会返回正确的答案,因为没有对象字段“142”。