EN RU
Форум

Методология

Технологии

Инструментарий

Библиотеки

Учебные материалы

DocumentationJSDocSource

functions

Блок предоставляет объект, содержащий набор методов для работы с функциями 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 может работать в двух режимах:

  1. Вызов оригинальной функции производится по истечению задержки после последней попытки вызова.
  2. Первый вызов оригинальной функции производится сразу же при вызове декорированной функции. Дальнейшее поведение аналогично режиму 1.

Возвращаемое значение: 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 миллисекунд.

Module functions

A set of helpers to work with JavaScript functions

Object methods:

isFunction(obj):Boolean
description
Checks whether a given object is function
parameters
obj
*
noop()
description
Empty function

functions__debounce

Debounces given function
parameters
fn
Function
function to debounce
timeout
Number
debounce interval
invokeAsap
Boolean
invoke before first interval
ctx
Object
context of function invocation
returns
Function
debounced function

functions__throttle

Throttle given function
parameters
fn
Function
function to throttle
timeout
Number
throttle interval
invokeAsap
Boolean
invoke before first interval
ctx
Object
context of function invocation
returns
Function
throttled function