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.
О каких разных стадиях реализации идет речь?


Автор: Гость (не зарегистрирован), дата: 16 апреля, 2022 - 02:35
#permalink

Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
9 + 0 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Содержание

Учебник javascript

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

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

Интерфейсы

Все об AJAX

Оптимизация

Разное

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

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