Вот еще интересная штука

Код AS3:
var o:Object = { b: "1", c: "2" }
for (var name:String in o) {
o["a"] = "3";
trace(name, o[name]); // b 1, c 2
}
trace(o["a"]); // 3
То есть свойство a появляется только по выходе из цикла? Нет, не может быть! Проверим

Код AS3:
var o:Object = { a: "3", c: "2" }
for (var name:String in o) {
o["b"] = "1";
trace(name, o[name]); // a 3, b 1, c 2
}
trace(o["b"]); // 1
Ой, а тут все свойства на месте... Как же так?
Смысл в том, что цикл for .. in, судя по всему, обходит свойства в алфавитном порядке. При этом (как видно из первого случая) если мы сейчас на свойстве "b", это точно значит, что свойство "а" мы уже прошли (хотя, опять же, как видно из примера - вовсе не значит)