18.11.2011, 18:00
|
Аспирант
|
|
Регистрация: 18.06.2009
Сообщений: 55
|
|
Проще записать
var arr = {555:'Первый',777: 'Второй',666: 'Третий'};
for (var i in arr) {
alert(i + ':' + arr[i] + '; ');}
Зачем создавать лишении свойства,
объекты используют в коллекции также имена и свойства.
кто муже поведение IE можно включить меньшей версии из тела документа.
Последний раз редактировалось UDN, 18.11.2011 в 18:08.
|
|
18.11.2011, 19:00
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
UDN, и наступите на грабли какого-нибудь IE13, который будет, например, вообще каждый раз в случайном порядке выводить.
Уже было сказано, что на какой-либо порядок при переборе for-in рассчитывать не стоит.
|
|
19.11.2011, 03:57
|
Аспирант
|
|
Регистрация: 18.06.2009
Сообщений: 55
|
|
Сообщение от B@rmaley.e><e
|
наступите на грабли какого-нибудь IE13
|
Вы доживите с начало до IE13 и что за бред со случайным порядком
Какай идиот при создание ПО станет создавать еще и генерацию рандомных ссылок на элементы коллекции объекта.
Когда практически в каждой книжке при работе с элементами коллекции рекомендуется по возможности заменять
конструкцию
for (var i;i<100;i++)
на for (elem in object) //для каждого элемента в объекте
Посмотрите оптимизацию циклов работы с объектами, можно не только javascript, но и С++, С#,Delphi, VB?, *.Net, Java
Прекращайте свои сумасшедшие предположения, а то можно подумать, что на этом форуме только флудом и тролем занимаются.
Столько умных:
работают с галереями, документами большого объема, текстом
используют различного рода обертки,но по прежнему используют конкатенацию строк заместо document.write("a_1","a_2","a_n",...a_200)
Не знают, что при добавление или перемещение визуальных объектов(причем каждого), происходит обновление все
документа.
window.offscreenBuffering
Если этот режим включен, то отображение объектов производится в фоновом режиме, а затем сформированное изображение появляется на экране.
offscreenBuffering = true; // включить насильственную буферизацию
так же разницу и особенности при работе с [] и {}
Аргументы нужно подкреплять, хотя с аргументами от сороки на хвосте куда уж вам..
Последний раз редактировалось UDN, 19.11.2011 в 04:56.
|
|
19.11.2011, 11:27
|
|
猫
|
|
Регистрация: 07.06.2007
Сообщений: 7,504
|
|
Сообщение от UDN
|
Какай идиот при создание ПО станет создавать
|
Наверное тот же что в IE9 закругленные углы с градиентной заливкой создал, посмотри "приятно" удивишся
Ты видно ещё не нашёл свои грабли.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
|
|
19.11.2011, 13:09
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от UDN
|
Когда практически в каждой книжке при работе с элементами коллекции рекомендуется по возможности заменять
конструкцию
for (var i;i<100;i++)
на for (elem in object) //для каждого элемента в объекте
|
Дуглас Крокфорд не так давно заявлял, что видел только одну хорошую книгу по JS. И та — javascript : The Definitive Guide.
То, что авторы практически каждой книги не читали стандарт, не делает их специалистами, а книжки хорошими.
Сообщение от UDN
|
document.write("a_1","a_2","a_n",...a_200)
|
Да более того, я даже метод такой не использовал уже лет 5.
Сообщение от UDN
|
Аргументы нужно подкреплять, хотя с аргументами от сороки на хвосте куда уж вам..
|
Как два пальца об асфальт: стандарт, п. 12.6.4:
Цитата:
|
Механизм обхода (перечисления) свойств (шаг 5 первого алгоритма, шаг 6 второго) зависит от конкретной реализации.
|
Сообщение от UDN
|
Какай идиот при создание ПО станет создавать еще и генерацию рандомных ссылок на элементы коллекции объекта.
|
Вы про алгоритмы что-нибудь слышали? Рандомизированные, например.
Сообщение от UDN
|
Посмотрите оптимизацию циклов работы с объектами, можно не только javascript, но и С++, С#,Delphi, VB?, *.Net, Java
|
Использовать for-in — офигенная оптимизация. Особенно с учётом того, что все видимые свойства из всей цепочки прототипов будут проитерированы.
Вы когда на другие языки ссылаетесь, учитывайте особенности текущего, что ли.
|
|
19.11.2011, 21:00
|
Аспирант
|
|
Регистрация: 18.06.2009
Сообщений: 55
|
|
Ну во первых, давайте не будем смешивать понятия [] и {}
это не одно и тоже.
В массивах нет различия в записи индекса.
var arr=[];
arr['1'] = "Первый";
arr['5'] = "Второй";
arr['10'] = "Третий";
alert([arr])
и
var arr=[];
arr[1] = "Первый";
arr[5] = "Второй";
arr[10] = "Третий";
alert([arr])
Во вторых конструкция for, это все лишь более удобная форма записи циклов.
for(var j=0,s="";j<5;j++){s += j + " "};
alert(s);
и опа парсится в
/**for (;;)
аргументы:
1-ый - инициализация переменных
2-ой - условие выхода из цикла
3-ий - изменение счетчика
*/
var s="",j = 0; //1-ый - инициализация переменных
for (;;){
if (j < 5){ //2-ой - условие выхода из цикла
s += j + " ";
j++;} //3-ий - изменение счетчика
else {break;}
}
alert(s);
Сообщение от B@rmaley.e><e
|
То, что авторы практически каждой книги не читали стандарт, не делает их специалистами, а книжки хорошими.
|
Интересные у вас убеждения кроме Дуглас Крокфорд, книги пишут дилетанты))))
Сообщение от B@rmaley.e><e
|
Использовать for-in — офигенная оптимизация. Особенно с учётом того, что все видимые свойства из всей цепочки прототипов будут проитерированы.
|
У вас больное воображение, у меня и в мыслях не было так подумать.
for-in - передача по ссылке на объект т.е. Obj[i], а не создание копии с теми же свойствами.
Термины живут еще с Assembler-ов.
К тому же структуру алгоритмов можно посмотреть, в материалах по дизассемблированию и отладке кода.
Так же можно не мало взять с сайтов подобных http://140byt.es/
Последний раз редактировалось UDN, 19.11.2011 в 21:30.
|
|
19.11.2011, 21:30
|
|
Модератор
|
|
Регистрация: 27.04.2010
Сообщений: 3,417
|
|
UDN, убейся уже. Хватить херню постить.
|
|
20.11.2011, 05:45
|
|
⊞ Развернуть
|
|
Регистрация: 11.01.2010
Сообщений: 1,810
|
|
Сообщение от UDN
|
for-in - передача по ссылке на объект т.е. Obj[i], а не создание копии с теми же свойствами.
|
И? При переборе через for(var i = 0; i < length; ++i), скажу Вам по секрету, копирования тоже не будет. Более того, добиться копирования при работе с объектами в JS весьма сложно.
Сообщение от UDN
|
В массивах нет различия в записи индекса.
|
А в объектах они есть?
var a = {};
a[1] = 5;
alert(a['1']); // Внезапно!
Более того, я не понимаю, как вообще связано то, о чём Вы вещаете, с порядком перебора ключей.
|
|
20.11.2011, 07:12
|
|
Рассеянный профессор
|
|
Регистрация: 06.04.2009
Сообщений: 2,379
|
|
Сообщение от UDN
|
Ну во первых, давайте не будем смешивать понятия [] и {}
это не одно и тоже.
|
ты не поверишь) В js Массив - это тот же объект, с несколькими геттерами/сеттерами и другим прототипом. Другой прототип не меняет "механику" работы, и парочка геттеров/сеттеров в общем-то тоже.
Последний раз редактировалось Riim, 22.11.2011 в 16:54.
|
|
21.11.2011, 16:10
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от UDN
|
Когда практически в каждой книжке при работе с элементами коллекции рекомендуется по возможности заменять
конструкцию
for (var i;i<100;i++)
на for (elem in object) //для каждого элемента в объекте
|
Это плохие книги, не читайте их.
http://alljs.ru/articles/array/iteration
Сообщение от Riim
|
Массив - это тот же объект, с несколькими геттерами/сеттерами и другим прототипом.
|
Если быть точным, то массивах переопределён только внутренний метод [[Set]], который ведёт себя по другому для числовых имён свойств и для length, гетеры все те же.
По теме поста: если важна последовательность, то только массив. Хэш по определению не обеспечивает порядок.
|
|
|
|