Безопасно ли ссылаться на свойства объекта по индексу? - PullRequest
2 голосов
/ 10 января 2011

Учтите, у меня есть этот объект:

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

Я не могу изменить это на массив, у меня нет доступа к нему, я хотел бы знать, если это безопасночтобы получить доступ к свойствам объекта по индексу, так:

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

Я знаю, что для каждого цикла не следует использовать в этой ситуации, потому что значения хешируются или что-то?Но справка по индексу может быть в порядке?

1 Ответ

8 голосов
/ 10 января 2011

Нет, 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]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...