for / in statement

时间:2011-04-03 03:38:59

标签: javascript

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

我正在使用的book将其解释为:

for(variable in object){
    statement
}

举个例子:

var links = {
    link1: {img: '/img/link1.jpg', w: 100 },
    link2: {img: '/img/link2.jpg', w: 140 }
};

我如何打印出所有链接?

如果我使用:

for(x in links){
    document.write(x);
}

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

我很感激任何参考或链接到示例,我只是发现书中的2个代码示例并没有像我想的那样帮助我理解。

2 个答案:

答案 0 :(得分: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");
    }
}

会给出

link1:
    img = /img/link1.jpg
    w = 100
link2:
    img = /img/link2.jpg
    w = 140

另外值得一提:正如this question的答案中所讨论的,使用hasOwnProperty时几乎总是需要for ... in保护条款。

答案 1 :(得分:-1)

for(x in links){
    document.write(links[x]);
}