Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как побороть определение прототипа в контексте массива? (https://javascript.ru/forum/misc/7976-kak-poborot-opredelenie-prototipa-v-kontekste-massiva.html)

Василий Б. 01.03.2010 17:46

Как побороть определение прототипа в контексте массива?
 
На третьей итерации в массиве присутствует метод in_array

Как-нибудь это лечется? Очень не хочется при каждом цикле делать проверку на тип элемента.

Array.prototype.in_array = function(arg)
{
	for (var i=0; i < this.length; i++)
    {
		if (this[i] == arg)
        {
		    return i;
		}
	}

	return -1;
}

var arr = new Array('first','last');
for (i in arr)
{
    alert(arr[i] + "\n typeof: " + typeof arr[i])
}


выводит:

string
string
function

Kolyaj 01.03.2010 17:48

Не нужно перебирать массивы с помощью for-in. Или for (var i = 0; i < arr.length; i++) или метод forEach.

Василий Б. 01.03.2010 18:19

Спасибо за совет с for, но мне нужно по ключам переборку делать.

Цитата:

или метод forEach.
а что это за метод? где про него почитать можно?

Kolyaj 01.03.2010 18:28

Цитата:

Сообщение от Василий Б.
Спасибо за совет с for, но мне нужно по ключам переборку делать.

Так у вас и делается по ключам. in_array такой же ключ, как и 0, 1, ...

Цитата:

Сообщение от Василий Б.
а что это за метод? где про него почитать можно?

http://alljs.ru/2009/08/rasshirenie-...ruktora-array/


Часовой пояс GMT +3, время: 14:19.