Есть ассоциативный массив:
static private const distribution:Object = {item1:2,item2:2,item3:2};
Осуществляю перебор элементов:
. . .
this.__distribution=distribution;
. . .
for (var name:String in this.__distribution) {
count=int(this.__distribution[name]);
. . .
}
Ожидаем, что элементы массива будут перебираться по каком-нибудь вменяемому принципу - например, в AS2 перебор осуществлялся от последнего к первому.
Однако, порядок перебора свойств оказывается совершенно не очевидным.
Иногда перебор начинается с item2, иногда с item3. Особенно это очевидно при запуске приложения на разных компьютерах.
Ничего удивительного, в хелпе об этом так и сказано:
Iterates over the dynamic properties of an object or elements in an array and executes statement for each property or element. Object properties are not kept in any particular order, so properties may appear in a seemingly random order.
1 комментарий:
Правильно. Потому что при создании объекта через {a,b,c}, никто не обещает что объекты в памяти будут храниться в таком же порядке.
Если же добавить переменные после создания обьекта:
var t:Object = new Object();
t.a = 1;
t.b = 1;
t.c = 1;
в for .. in они придут в том же порядке a,b,c.
Отправить комментарий