JS: как сделать перебор объекта-массива?

Духовность™

Продвинутый новичок
JS: как сделать перебор объекта-массива?

<script type="text/javascript">
PHP:
// есть вот такой метод, добавленный в прототип массива
Array.prototype.myfunc = function()
{
	// code 
}

// создаем массив
var hash = new Array();
hash['key1'] = 'value1';
hash['key2'] = 'value2';
hash['key3'] = 'value3';

// выводит 0 - через стандартный for перебрать не удается
alert(hash.length); 

// пробуем так: 
for (i in hash)
{
    // на четвертой итерации выводит код метода myfunc 
    alert('typeof: ' + typeof hash[i] + ', value: ' + hash[i]);
}
</script>

Вопрос: как перебрать свойства массива самым элегантным образом? Без разбора typeof каждого элемента hash?
 

weregod

unserializer
стандартная ситуация, в которой обнаруживается несовершенство JS.

> метод массива in_array
в JS принято indexOf (то есть метод, который индекс элемента или -1 возвращает)
 

weregod

unserializer
для единообразия ничего не мешает объявить одноименный метод массиву:

http://www.google.com/search?source=ig&hl=en&rlz=1G1GGLQ_ENRU327&=&q=Javascript+Array+-+indexOf&btnG=Google+Search&aq=f&oq=
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
1.
Мы редко пишем сайты на C, редко обрабатываем изображения на чистом PHP.
Так же, при работе с JS стоит пользоваться готовой и очень хорошей библиотекой.

2. Jquery есть в репозитории гугла, ее подключение не загружает сервер и канал и незаметно для пользователя.

Написание того, что уже написано гораздо лучше, чем это можем сделать мы - изобретение велосипеда.

3. Jquery "оборачивает" объекты. Она гораздо удобней, чем Prototype, который расширяет объекты. Прямой связи вроде-бы нет, но в удобстве они несравнимы. Ext и Mootools не смотрел.
 

Духовность™

Продвинутый новичок
Я не хочу начинать спор про "велосипеды". Если бы я не изобретал велосипеды, я бы ничего не знал и не умел. По меньшей мере, я бы не столкнулся с этой проблемой и как следствие не знал бы, что может возникнуть такая ситуация.

Написание того, что уже написано гораздо лучше, чем это можем сделать мы - изобретение велосипеда.
следуя твоей логике, нет смысла вообще что-то изучать и пытаться делать, ибо все уже сделано до нас.
 

vovanium

Новичок
grigori
Написание того, что уже написано гораздо лучше, чем это можем сделать мы - изобретение велосипеда
Вопрос спорный вообще-то, jquery конечно хорошая вещь, но часто его функционал избыточный, и то же самое можно написать, на чистом JS (при прямых руках, конечно), и работать оно будет быстрее.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
triumvirat
я не пытался тебя обидеть, это мой опыт последних 3х лет;
абсолюты "все" и "ничего" мне неинтересны

vovanium
>работать оно будет быстрее
тест-кейсы реальных ситуаций в студию, plz
>на чистом JS (при прямых руках, конечно)
с указанием времени исполнения и уровня реального приложения

я делаю довольно прикольные штуки, вроде ajax-аплоада, интерактивное создание thumbnail-ов, ajax-формы, календарь для ввода даты и т.п.
"на чистом", т.е. с нуля, все это писать больше года
 

vovanium

Новичок
grigori
тест-кейсы в студию, plz
тесты чего? jquery написан на обычном js, и использует обычные функции, никакой магии там нет.

Никто не спорит что с помощью jquery можно прилично сократить время разработки. Но я видел случаи когда для того чтобы прочитать поле формы (для проверки) используют jquery. Нужно всё в меру.

Что касается прикольных штук, то тут в принципе ничего сложного и для обычного JS, естественно если разбираешься в JS.

Для сравнения делаю web-приложение полностью ajax в стиле win, в наличии панель инструментов с кнопками (4 типа), свои select поля с иконками, возможностью прокрутки колесиком во всех броузерах, деревом с возможностью выбора (полного и частичного), размером и подсчетом размера выделенных, grid для лога, вся работа ведется по ajax, поддержка скинов, причем большая часть CSS создается динамически, что позволяет уменьшить CSS-файл раза в 3.

Итого весь JS у меня занимает 25 КБ, без минимизации, работает очень быстро, так как был хорошо отпрофайлен (да и опыт есть, в этом деле).
Если не изобретать велосипед как ты говоришь, и юзать готовые решения, то хорошо если я уложусь в метр JS, и при этом функционал не будет таким же.
 

Активист

Активист
Команда форума
x-yuri
Есть мнение, что PHP гавно. И что?

Юзаю jQuery и хорошо. У меня даже верстальщик уже разбираться в нем стал, хотя от далек от JS и PHP , очень сильно долек.
 
Сверху