Порядок итерации отличается в IE9

В IE9 числовые ключи свойств объекта сортируются, что приводит к другому порядку итераций в IE9 по сравнению с IE8, где порядок сохраняется при вставке.

var obj = {
  "5": "John",
  "1": "Kumar",
  "3": "Rajesh",
  "2": "Yogesh"
}

for(var key in obj) alert(key) 

Результат

// 1,2,3,4 в IE9

// 5,1,3,2 в IE8, IE7

Есть ли в любом случае, я могу отключить эту автоматическую сортировку IE9. Если нет, то можно ли как-то заставить браузер понять, что ключи должны быть определены как строки, а не как числа (но без добавления пробела, _ или любых других специальных символов)

Пожалуйста, предложите!

Вот пример кода, где я сталкиваюсь с этой проблемой.

    function Person(id, name) {
    this.id = id;
    this.name = name;
}

var persons = new Object();

var p1 = Person("5","John")
persons[5]=p1
var p2 = Person("1","Kumar")
persons[1]=p2  
var p3 = Person("3","Rajesh")
persons[3]=p3
var p4 = Person("4","Yogesh")
persons[4]=p4


for(var id in personId){
   var p = persons[id];
   var option = new Option(p.name, p.id);
   select.options[select.options.length] = option;
}

Параметры выбора, сгенерированные этим сценарием, были отсортированы по идентификатору в IE9, где мне нужен тот же порядок, в котором он вставлен.

Ответы на вопрос(1)

Ваш ответ на вопрос