Пробуя разные языки программирования или технологии, многие пытаются «утянуть» за собой понравившиеся приемы в другие языки. Я сделал подборку удобных, на мой взгляд, приемов, которые я использую в js.
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]);
}
};
Для каждого элемента массива будет выполнена функция, где this будет ссылаться на элемента массива. Аргументы index и value на индекс и значение соответственно.
Комментарии: