Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Array.each — выдаёт ошибку (https://javascript.ru/forum/misc/9651-array-each-%E2%80%94-vydajot-oshibku.html)

exec 29.05.2010 21:00

Array.each — выдаёт ошибку
 
Есть ф-ция Array.each

Array.prototype.each = function (handler) {
	for (var i = 0; i < this.length; i++) {
		handler.call(this[i], i, this[i]);
	}
return this;
}


Вызов функции выдаёт ошибку:

[0, 1, 2].each(function (i) {
alert(i);
}); // Uncaught exception: TypeError: Cannot convert '}
    //[0, 1, 2, 3, 4, 5, 6, 7, 8]' to object


Почему?

P.S. вариант без использования прототипов (при той же схеме реализации) ошибок не выдаёт. Мистика какая-то.

Gvozd 29.05.2010 21:19

Array.prototype.each = function (handler) {
	for (var i = 0; i < this.length; i++) {
		handler.call(this[i], i, this[i]);
	}
return this;
};//не забываем писать точку с запятой
[0, 1, 2].each(function (i) {
alert(i);
});

exec 29.05.2010 21:23

Спасибо за помощь.

Kolyaj 29.05.2010 21:45

Есть же стандартный forEach.

B~Vladi 29.05.2010 21:50

Цитата:

Сообщение от Kolyaj
Есть же стандартный forEach.

Мб for in?:-?

Kolyaj 29.05.2010 21:55

Цитата:

Сообщение от B~Vladi
Мб for in?

for-in перебирает свойства массива, а нужно перебирать элементы массива.

B~Vladi 29.05.2010 22:17

А ну да.

Gvozd 29.05.2010 22:29

Цитата:

Сообщение от Kolyaj
Есть же стандартный forEach.

что-то я затупил.
где?
покажите

B@rmaley.e><e 29.05.2010 23:01

Array.prototype.forEach

B~Vladi 29.05.2010 23:29

:blink:
Первый раз вижу.

PeaceCoder 29.05.2010 23:34

Цитата:

Сообщение от B~Vladi
Первый раз вижу.

B правильно видешь. Это фишка ФФ.

B@rmaley.e><e 30.05.2010 08:36

Цитата:

Сообщение от PeaceCoder
Это фишка ФФ.

А еще Оперы и Хромого.

Цитата:

ECMAScript Edition: ECMA-262 Edition 5
Читайте 5-ый стандарт. (секция 15.4.3.1)

Kolyaj 30.05.2010 09:13

Цитата:

Сообщение от PeaceCoder
B правильно видешь. Это фишка ФФ.


B@rmaley.e><e 30.05.2010 10:28

В опере 10.5 и хроме 5 reduce и reduceRight есть.

Kolyaj 30.05.2010 15:31

Я когда эту табличку делал, ещё не было.


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