Я предполагаю, что предпочтительный способ перебора объекта следующий:
for (var prop in obj) {
if( obj.hasOwnProperty( prop ) ) {
console.log("obj." + prop + " = " + obj[prop]);
}
}
MDN говорит, что
Удаленные, добавленные или измененные свойства. Цикл for ... in выполняет итерацию по свойствам объекта в произвольном порядке (см. оператор удаления, чтобы узнать, почему нельзя полагаться на о кажущейся упорядоченности итераций, по крайней мере, в настройке кроссбраузерности).
Итак, если я не изменяю свойства объекта во время итерации, мне может быть гарантирован правильный порядок, то есть порядок, в котором ключи / свойства появляются в объекте, или этот оператор означает что-то еще?
Object.keys()
для извлечения имен свойств, а затем наложить свой собственный порядок, отсортировав список (или как хотите). Свойства по своей сути не имеют упорядочивания. - person Pointy   schedule 20.02.2016