JavaScript метод bind()

JavaScript Function

Определение и применение

JavaScript метод bind() возвращает новую функцию, которая вызывается как метод объекта, устанавливая ее контекст исполнения (this) в указанное значение. В качестве аргументов эта функ­ция будет получать ар­гу­мен­ты, переданные методу bind(), за которыми следуют аргументы, переданные уже непосредственно новой функции.

Поддержка браузерами

МетодChrome
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
Edge
bind()ДаДаДаДаДаДа

JavaScript синтаксис:

// без передачи дополнительных аргументов, которые должны быть связаны с функ­ци­ей 
function.bind( thisArg ); 

//с указанием дополнительных аргументов, которые должны быть связаны с функ­ци­ей 
function.bind( thisArg, arg1, ...argX ); 

Версия JavaScript

1.8.5 (ECMAScript 5.1)

Значения параметров

ПараметрОписание
thisArgЗначение, передаваемое в качестве параметра this целевой функции при вызове связанной функции. Значение игнорируется, если связанная функция создается с помощью оператора new. Обязательное значение.
argsНоль или более значений аргументов, которые должны быть связаны с функ­ци­ей. Необязательный параметр.

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

let obj = {  // инициализируем переменную, содержащую объект
    a: 100,
    b: 200
};

// функция возвращает сумму трех значений
let func = function( c ) { return this.a + this.b + c };

// переменная содержит новую функцию, которая вызывается как метод объекта
let newFunc = func.bind( obj, 300 );

newFunc(); // возвращаемое значение 600

В следующем примере мы создадим новую функцию путём фиксирования аргументов существующей (частичное применение), этот прием в функциональном программировании называется каррингом (currying):

// функция воз­вра­ща­ет произведение 2 ар­гу­мен­тов
let multiply = function( a,b ) { return a * b }; 

// соз­даем но­вую функ­цию, по­доб­ную multiply, но с контекстом равным null и первым аргументом равным 3
let triple = multiply.bind( null, 3 );

// но­вая функ­ция при­ни­ма­ет один ар­гу­мент
triple(2) // 6 (первый ар­гу­мент свя­зан со зна­че­ни­ем 3, а значение 2 пе­ре­да­ет­ся в качестве второго аргумента)
triple(3) // 9 (первый ар­гу­мент свя­зан со зна­че­ни­ем 3, а значение 3 пе­ре­да­ет­ся в качестве второго аргумента)
triple(4) // 12 (первый ар­гу­мент свя­зан со зна­че­ни­ем 3, а значение 4 пе­ре­да­ет­ся в качестве второго аргумента)
JavaScript Function