Несколько удобных приемов в javasctipt

17 Май
2012

Пробуя разные языки программирования или технологии, многие пытаются «утянуть» за собой понравившиеся приемы в другие языки. Я сделал подборку удобных, на мой взгляд, приемов, которые я использую в js.



Times


Этот прием я позаимствовал из ruby.

Number.prototype.times = function(fn) {
if(typeof(fn) != 'function')
throw new Error('Argument must be a function');

for(i =0; i < this.length; i++) {
fn.call(this);
}
};


Пример использования:

(5).times(function() {
// do something
});


Код «do something» выполнится пять раз. This внутри анонимной функции будет ссылаться на число (в котором вызван метод times) Немного подредактировав код можно заставить ее ссылаться на номер итерации ( fn.call(this) следует заменить на fn.call(i) )
Я считаю такой способ более удобным(в некоторых случаях), чем использование цикла for напрямую.

Each


На использование этого приема меня вдохновил jQuery.

 Array.prototype.each = function(fn) {
if(typeof(fn) != 'function')
throw new Error('Argument must be a function');

for(i = 0; i < this.length; i++) {
fn.call(this[i], i, this[i]);
}
};


Пример использования:

 ([1,3]).each(function(index, value) {
alert('index - '+index+';value - '+value);
});


Для каждого элемента массива будет выполнена функция, где this будет ссылаться на элемента массива. Аргументы index и value на индекс и значение соответственно.
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх