Javascript.RU

Новые методы для работы с массивами

В стандарте ECMA-262-5 появилось множество мощных методов облегчающих работу с объектом Array. На данный момент эти методы уверенно работают в обновленных браузерах Mozilla. В других браузерах они находятся на разных стадиях реализации. Тот факт, что они не работают в старых браузерах — не отменяет пользы и удобства их применения. Тем более, что их можно дописать в прототип объекта Array.

Новые итеративные методы в JavaScript

-1

Автор: FINoM, дата: 24 марта, 2011 - 00:19
#permalink

Я не могу дорубить, почему forEach (и возможно другие новые методы) не прикрутили к объекту (не массиву).


Автор: Sweet, дата: 25 марта, 2011 - 13:14
#permalink

К объекту тоже кое-что прикрутили:) И все новые методы массива можно использовать при работе с объектами:

function Example(x, y){
  this.x = x;
  this.y = y;
};
Example.prototype.sum = function(){
  return this.x + this.y;
};
Example.prototype.double = function(){
// Вместо for(var key in this) if(this.hasOwnProperty(key)) ...
  Object.keys( this )
// Получаем массив, к которому и применяем новые методы
        .forEach( function( key ){
// this "потерялся" бы, но...
          this[ key ] = this[ key ] * 2;
// У функций тоже есть новое
        }.bind(this) );
  return this;
};

var example = new Example(3, 7);
alert( example.sum() );
example.double();
alert( example.sum() );

Автор: FINoM, дата: 26 марта, 2011 - 03:45
#permalink

Странно, а почему тогда этот пример выдаёт "TypeError: Object # has no method 'forEach'"

var ar = {a:4,b:5};
ar.forEach(
    function(element, index, array){
        console.log(element, index, array);
    });

Автор: Sweet, дата: 26 марта, 2011 - 12:36
#permalink

Странно, что после короткого кода с комментами возник такой вопрос Чтобы заработало, твой пример должен выглядеть так:

var ar = {a:4,b:5};
Object.keys(ar).forEach(
    function(element, index, array){
        console.log(this, this[element], element, index, array);
    }.bind(ar));

Автор: B@rmaley.e><e, дата: 28 апреля, 2011 - 17:39
#permalink

Все описанные Вами методы реализованы еще в Опере 10.1, Chrome 5 и Safari 4.
О каких разных стадиях реализации идет речь?


 
Поиск по сайту
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Популярные таги
Последние темы на форуме
Forum