Javascript 是否始终需要在整个链中(或按顺序)调用对象?

Javascript 是否始终需要在整个链中(或按顺序)调用对象?,javascript,jquery,Javascript,Jquery,我正在尝试查看reddit的API。我看到了一个他们从网站上抓取图像url的网站。然而,我不明白他们是如何获得这些对象的。在ReachStatement中,他们使用了data.data.children和item.data.url,但是我在json中找不到紧跟在另一个数据对象之后的数据对象http://www.reddit.com/r/pics.json. 我也没有看到item.data.url。如果我从一开始就看,前两个对象是种类和数据。这意味着什么?给定小提琴中的代码: $.getJSON(

我正在尝试查看reddit的API。我看到了一个他们从网站上抓取图像url的网站。然而,我不明白他们是如何获得这些对象的。在ReachStatement中,他们使用了data.data.children和item.data.url,但是我在json中找不到紧跟在另一个数据对象之后的数据对象http://www.reddit.com/r/pics.json. 我也没有看到item.data.url。如果我从一开始就看,前两个对象是种类和数据。这意味着什么?

给定小提琴中的代码:

$.getJSON("http://www.reddit.com/r/pics/.json?jsonp=?", function(data) {
    $.each(data.data.children, function(i,item){
        $("<img/>").attr("src", item.data.url).appendTo("#images");
    });
});
data和item都是函数参数,它们的名称与JSON中的任何命名键都没有关系

参数数据代表整个JSON结构,但由于它只是一个名称不重要的参数,因此我将其称为foo,以消除其与该结构内容之间的歧义,因此foo.data指JSON第一级中名为data的子元素


item参数表示数组foo.data.children中的每个元素,因此第一个item的item.data.url将等效于JSON中的data.children[0].data.url。

返回的JSON结构为:

{
    data: {
        after: "",
        before: null,
        children: [
            {
                data: {
                    url: ""
                }
            },
            ...
        ],
        modhash: ""
    },
    kind: "Listing"
}
结果变量的名称在回调函数参数中称为数据。因此,要找到孩子们,您需要键入:

data.data.children;
接下来,在$.each循环中,子数组中的每个条目都分配给该回调函数中的一个项变量。从那里你可以深入到url。属性item.data.url


如果data.data令人困惑,您可以随意命名它们。

data只是传递给回调函数的参数的名称,如果接收到的JSON数据结构包含名为data的属性,那么当然这意味着它必须在此处作为data.data进行寻址。将该参数名称更改为foo,foo.data将用于处理JSON数据结构的数据属性…对。。。我不知道为什么我没有看到数据参数。谢谢