Павел Корнилов
@KorniloFF Автор вопроса, куратор тега JavaScript
Coder321, за исключением наследования от разных прототипов. То есть, и то и то наследует у Object.prototype, но массивы еще и у Array.prototype.
И, как оказалось, объекты - это неупорядоченный набор свойств, в отличие от массива.
Спасибо за попытку помочь, но я сразу же переписал код в соответствии с советом display: block на массивы - и всё ожидаемо заработало во всех броузерах.
К сожалению, совет про использование числовых ключей в объекте - скорее вреден, потому что это незадокументированная фича и, как оказалось, она работает не во всех броузерах, поэтому можно наступить на те же грабли, что и я.
Для остальных:
При необходимости стекового сохранения данных в единый объект - подходят исключительно массивы.
ой всё, ну и что? Зато это всегда был самый кроссброузерный способ навешивания обработчиков.
И я указал, что это примитивный вариант, который можно уже доработать по своим предпочтениям.
Павел Корнилов
@KorniloFF Автор вопроса, куратор тега JavaScript
Coder321, это придётся юзать массив, а с ними таких проблем и так нет.
Уже переписал код на массивы - очередность добавления сохраняется везде. Как говорится, нужно лучше читать спецификацию.
Хотя, я считаю, что такое неупорядоченное отношение объектов к собственным свойствам - это скорее минус языка. В моём случае объекты были бы более предпочтительны, чем массивы. Точнее, мне нужны были именно ассоциативные массивы, но они в JS === Object.
Павел Корнилов
@KorniloFF Автор вопроса, куратор тега JavaScript
Спасибо, точно!
Но хак, приведенный по 2 ссылке не всегда работает. У меня как раз ключи строковые, а броузер ломает их порядок. Так что на это рассчитывать никак нельзя.
Думаю, вы правы, придется переписывать на массив.