Функция JavaScript bind ()

Метод 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 ()

Интересные статьи...