К примеру создали объект с такими свойствами:
var object = {
p0: 0,
p1: 1,
p2: 2,
p3: 3,
p4: 4,
p5: 5
}
Считается(?), что в JavaScript мы не можем обращаться к свойству объекта по его индексу, как это можно делать с обычным массивом, потому, что порядок следования свойств кешируется, как это угодно JS и не наше это дело, знать как чередуются индексы:
document.write("object[1]: " + object[1]);
выведет, что свойство object под индексом [1] равно «undefined»:
object[1]: undefined .
Но почему тогда для for ... in эти индексы доступны и они соответсвуют порядку их прописывания?
for (property in object) {
document.write(property + ": " + object[property] + "<br />");
}
получаем как и ожидается, как-будто это индексы массива:
p0: 0
p1: 1
p2: 2
p3: 3
p4: 4
p5: 5
Почему, когда мы пишем в определенном порядке массив и объект, то индексы доступны для массивов, но не объектов, хотя
for ... in перебирает их именно в том же порядке, как если бы мы перебирали массив?