通过索引引用对象的属性是否安全?

时间:2011-01-10 01:12:19

标签: javascript arrays object indexing

考虑一下,我有这个对象:

var ob = {
  "page1.html" : {...},
  "page2.html" : {...},
  "page3.html" : {...}
}

我无法将其更改为数组,我无法访问该数据,我想知道的是,通过索引访问对象属性是否安全,所以:

var obVal = ob[0]; // reliably returns "page1.html"'s value every time

我知道在这种情况下不应该使用每个循环,因为值是哈希值或其他值?但是按索引引用可能没问题?

1 个答案:

答案 0 :(得分:8)

不,ob[0]甚至不起作用 - 它会给undefined。事实上,如果您的对象是:

var ob = {
  "0": "blah",
  "page1.html" : {...},
  "page2.html" : {...},
  "page3.html" : {...}
}

ob[0]会给你"blah"

for-each循环 是适用于这种情况的正确工具,但您应该检查循环中的每个索引是否实际属于该对象,而不是父项:

for (var i in ob) { // i will be "page1.html", "page2.html", etc...
    if (!ob.hasOwnProperty(i)) continue;
    // Do something with ob[i]
}