![]() |
|
||||||||||
|
|||||
|
не понимаю почему индекс массива становится строкой?
Выводит ошибку:
__________________
Сам себе репортер |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Потому что цикл for in преобразует его в строку.
Последний раз редактировалось mre; 13.08.2008 в 14:25. |
|
|||||
|
стервочка (я мужик)
|
terbooter, используйте Object. тогда он останется int и преобразования не будет происходить.
|
|
|||||
|
Чем так плохо? А for...in, имхо, лучше оставить для перебора свойств объектов.
__________________
Дело не в тебе |
|
|||||
|
Modus ponens
|
Аха, грамотеи, млина =)
имя свойства объекта не может быть ни чем иным кроме строки (вернее, получить его нельзя ни в каком другом виде)просто для массива реализована обертка, т.е. когда мы пытаемся обратиться к array[0], то будет вызвана функция nextValue(), которая основываясь на числовом значении найдет какое-то из свойств массива (т.е. если сделать свой аналог массива используя Proxy, то вполне можно, например при вызове array[0] вернуть все, что угодно). Ну и как правильно было до этого сказано, for-in, соответственно конвертирует в строку (т.как это единственная возможность достучаться до свойства, если не по прямой ссылке)
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
Хм...
Почему же тогда var obj:Object = new Object();
obj[0] = "0";
obj["a"] = "a";
for (var i:* in obj)
{
trace(typeof(i));
}
А ну да, просто i приводится к нужному типу по значению. Последний раз редактировалось mre; 13.08.2008 в 18:51. |
|
|||||
|
стервочка (я мужик)
|
mre, только не * а Object. там не может быть undefined.
|
|
|||||
|
Регистрация: Jul 2007
Адрес: Москва
Сообщений: 996
|
BlooDHounD, Вы видите все тонкости, спасибо
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:59. |
|
|
« Предыдущая тема | Следующая тема » |
|
|