Очень познавательно, но какого же тогда назначение итератора, если не перебор всех существующих свойств объекта? .. теряюсь в догадках.
Добавлено через 12 минут
Цитата:
Сообщение от gloomyBrain
Вот еще интересная штука
Код 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", это точно значит, что свойство "а" мы уже прошли (хотя, опять же, как видно из примера - вовсе не значит)
|
Ну тут действительно ничего странного не вижу. for in просто не проверяет при каждом проходе не появилось ли новых свойств пока он тут крутился. Берет список в самом начале и крутит.. Хотя список свойств он набирает кажется по 8 штук. И ваше пропавшее свойство скорее всего появится при большем количестве исходных элементов.