Метод bind () функции JavaScript позволяет объекту заимствовать метод из другого объекта без копирования.
Синтаксис bind()
метода:
func.bind(thisArg, arg1,… argN)
Вот func
функция.
bind () Параметры
bind()
Метод принимает в:
thisArg
- Значение, указанное в качествеthis
параметра дляfunc
. Он игнорируется, если связанная функция создается с использованием оператора new .arg1,… argN
(необязательно) - аргументы, добавляемые к аргументам, предоставляемым связанной функции при вызовеfunc
.
Заметки:
- При использовании thisArg внутри setTimeout примитивные значения преобразуются в объекты.
- Если
thisArg
не указано, this из области выполнения обрабатывается какthisArg
.
Возвращаемое значение из bind ()
- Возвращает копию данной функции с указанным значением this и начальными аргументами (если предоставлены).
Пример: использование bind ()
this.x = 1; // "this" here is the global window object in browser const obj = ( x: 100, getX: function () ( return this.x; ), ); console.log(obj.getX()); // 100 const retrieveX = obj.getX; // the function gets invoked at the global scope console.log(retrieveX()); // 1 // Create a new function with 'this' bound to obj // global variable 'x' with obj's property 'x' are two separate entities const boundGetX = retrieveX.bind(obj); console.log(boundGetX()); // 100
Вывод
100 1 100
Как только метод передается где-то отдельно от объекта - this
теряется. Создание связанной функции из функции с использованием исходного объекта аккуратно решает эту проблему.
Рекомендуемая литература: вызов функции JavaScript ()