for/in statement

Dan*_*iel 3 javascript

我无法理解JavaScript中的for/in语句.

我正在使用的这本书解释如下:

for(variable in object){
    statement
}
Run Code Online (Sandbox Code Playgroud)

所以举个例子:

var links = {
    link1: {img: '/img/link1.jpg', w: 100 },
    link2: {img: '/img/link2.jpg', w: 140 }
};
Run Code Online (Sandbox Code Playgroud)

我如何打印出所有链接?

如果我使用:

for(x in links){
    document.write(x);
}
Run Code Online (Sandbox Code Playgroud)

它写出了2个属性名称(link1, link2),但是我无法理解如何访问嵌套更深层次的那些属性,我首先想到的是嵌套for/in循环,但我只是不理解语法.例如,在上面的代码中,是否x引用了属性名称?如果是这样就不会x.img获得img财产?或者是我的想法?

我很感激任何参考或链接到示例,我只是发现书中的2个代码示例并不能帮助我理解我想要的内容.

Dom*_*nic 5

x是指属性名称,但不是属性值.因此,要访问属性值,您需要这样做object[x].

所以,例如:

for (key in links) {
    var linkProperties = links[key];

    document.write(key + ": \n");

    for (property in linkProperties) {
        var propertyValue = linkProperties[property];
        document.write("    " + property + " = " + propertyValue + "\n");
    }
}
Run Code Online (Sandbox Code Playgroud)

会给

link1:
    img = /img/link1.jpg
    w = 100
link2:
    img = /img/link2.jpg
    w = 140
Run Code Online (Sandbox Code Playgroud)

另外值得一提:正如在这个问题的答案中所讨论的那样,hasOwnProperty使用时几乎总是需要一个保护条款for ... in.