繁体   English   中英

是否始终需要在整个链中(或依次)始终调用对象?

[英]Is it always required to call an object all the way through the chain (or in order)?

我正在尝试浏览reddit的API。 我看过一个小提琴 ,他们从网站上获取图像URL。 但是,我对它们如何获取对象本身感到困惑。 在他们的each()语句中,他们使用了data.data.childrenitem.data.url ,但是我无法在json的另一个数据对象之后的http://www.reddit.com/r/pics.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");
    });
});

dataitem都是函数参数,它们的名称与JSON中的任何命名键都没有关系。

参数data表示整个JSON结构,但由于它只是一个名称不重要的参数,因此我将其命名为foo以便将其与该结构的内容区foo.data来,因此foo.data 第一个foo.data引用了名为data的子元素。 JSON级别。

item参数表示在阵列中的每个元件foo.data.children ,所以item.data.url的第一个项目将相当于data.children[0].data.url的JSON内。

返回的JSON的结构为:

{
    data: {
        after: "",
        before: null,
        children: [
            {
                data: {
                    url: ""
                }
            },
            ...
        ],
        modhash: ""
    },
    kind: "Listing"
}

结果变量的名称在回调函数参数中称为data 因此,要找到孩子,您需要输入:

data.data.children;

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

如果data.data令人困惑,则可以data.data命名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM