Cómo iterar las propiedades del objeto javascript en el orden en que fueron escritas

Identifiqué un error en mi código que espero resolver con un mínimo esfuerzo de refactorización. Este error ocurre en los navegadores Chrome y Opera. Problema:

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

Salida en FF, IE Clave: 23 Valor: AA Clave: 12 Valor: BB

Salida en Opera y Chrome(Incorrecto)
Clave: 12 Valor BB
Clave: 23 Valor AA

Intenté hacer un objeto de orden inverso como este

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

Sin embargo, la salida es la misma. ¿Hay alguna manera de obtener para todos los navegadores el mismo comportamiento con pequeños cambios?

Respuestas a la pregunta(4)

Su respuesta a la pregunta