Блок предоставляет объект, содержащий набор методов для работы с функциями JavaScript.
Имя | Тип или возвращаемое значение | Описание |
---|---|---|
isFunction(obj {*} ) |
{Boolean} |
Проверяет, является ли переданный аргумент функцией. |
noop | {Function} |
Пустая функция. |
Элемент | Способы использования | Описание |
---|---|---|
debounce | JS |
Декоратор функции. Объединяет несколько вызовов функции, производимых в заданном временном интервале, в один. |
throttle | JS |
Декоратор функции. Ограничивает частоту выполнения функции до одного раза в указанный период. |
Блок реализован в технологиях:
vanilla.js
isFunction
Метод проверяет, является ли переданный аргумент функцией.
Принимаемые аргументы:
obj
{*}
– проверяемый объект. Обязательный аргумент.Возвращаемое значение: {Boolean}
. В случае, если аргумент является функцией – true
.
modules.require('functions', function(func) {
var a = function(){},
b = {};
console.log(func.isFunction(a)); // true
console.log(func.isFunction(b)); // false
});
noop
Пустая функция (function() {}
).
Не имеет аргументов и возвращаемого значения.
noop
можно использовать в ситуациях, когда для работы требуется функция, но нет смысла добавлять логику. Например в качестве «заглушки» для базовых классов при проектировании в парадигме ООП.
modules.define('base-class', ['inherit', 'functions'], function(provide, inherit, functions) {
provide(inherit({
getData : function() {
this._sendRequest();
},
_sendRequest : functions.noop
}));
});
Элементы блока реализуют набор декораторов функций.
Декораторы добавляют функции логику, не меняя ее оригинальной сигнатуры.
debounce
Декоратор, откладывающий вызовов функции до истечения задержки. После каждой попытки вызова задержка начинает отсчитываться заново.
Принимаемые аргументы:
fn
{Function}
— оригинальная функция. Обязательный аргумент.timeout
{Number}
— время задержки в миллисекундах. Обязательный аргумент.invokeAsap
{Boolean}
] — режим работы debounce
. По умолчанию используется первый режим (соответствует значению false
).context
{Object}
] — контекст для выполнения оригинальной функции.В зависимости от значения аргумента invokeAsap
debounce
может работать в двух режимах:
Возвращаемое значение: {Function}
. Декорированная функция.
modules.require('functions__debounce', function(provide, debounce) {
function log() {
console.log('hello!');
}
var debouncedLog = debounce(log, 300);
setInterval(debouncedLog, 50);
});
throttle
Декоратор позволяет «затормозить» функцию. Она будет выполняться не чаще одного раза в указанный период, сколько бы раз в течение этого периода ни была вызвана. Все промежуточные вызовы игнорируются.
Принимаемые аргументы:
fn
{Function}
— оригинальная функция. Обязательный аргумент.period
{Number}
— интервал между вызовами в миллисекундах. Обязательный аргумент.context
{Object}
] — контекст для выполнения оригинальной функции.Возвращаемое значение: {Function}
. Декорированная функция.
Метод удобно использовать, например, для установки ресурсоемких обработчиков для часто генерируемых событий – resize
, pointermove
и т.п.
modules.require('functions__throttle', function(provide, throttle) {
function log() {
console.log('hello!');
}
var throttledLog = throttle(log, 300);
setInterval(throttledLog, 50);
});
В результате, функция будет выполняться не чаще чем раз в 300 миллисекунд.