Como iterar as propriedades do objeto javascript na ordem em que foram gravadas

Identifiquei um bug no meu código que espero resolver com o mínimo esforço de refatoração. Esse bug ocorre nos navegadores Chrome e Opera. Problema:

var obj = {23:"AA",12:"BB"};
//iterating through obj's properties
for(i in obj)
  document.write("Key: "+i +" "+"Value: "+obj[i]);

Saída em FF, IE Chave: 23 Valor: Chave AA: 12 Valor: BB

Saída no Opera e Chrome(Errado)
Chave: 12 Valor BB
Chave: 23 Valor AA

Eu tentei fazer um objeto ordenado inverso como este

var obj1={"AA":23,"BB":12};
for(i in obj1)
  document.write("Key: "+obj[i] +" "+"Value: "+i);

No entanto, a saída é a mesma. Existe uma maneira de obter para todos os navegadores o mesmo comportamento com pequenas alterações?

questionAnswers(4)

yourAnswerToTheQuestion