JavaScript метод bind()
JavaScript FunctionОпределение и применение
JavaScript метод bind() возвращает новую функцию, которая вызывается как метод объекта, устанавливая ее контекст исполнения (this) в указанное значение. В качестве аргументов эта функция будет получать аргументы, переданные методу bind(), за которыми следуют аргументы, переданные уже непосредственно новой функции.
Поддержка браузерами
| Метод |  Chrome |  Firefox |  Opera |  Safari |  IExplorer |  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