Метод привязки позволяет объекту заимствовать метод у другого объекта. Это позволяет нам вручную устанавливать ключевое слово this для любого вызова функции. Он возвращает новую функцию, к которой привязано ключевое слово this. Давайте посмотрим на пример, чтобы лучше понять этот метод.

Рассмотрим следующий объект:

В приведенном выше объекте у нас есть автобусная компания под названием transline, которая имеет массив заказов, код транзита и функцию book, которая принимает номер автобуса и имя пассажира в качестве аргументов. Если бы мы хотели забронировать место для пассажира, мы бы вызвали функцию book в объекте transline следующим образом:

На консоль будет выведено следующее:

Теперь предположим, что у нас есть новая автобусная компания под названием GCoach. Мы создадим новый объект с деталями GCoach следующим образом:

Теперь предположим, что мы хотим забронировать место для пассажира, используя функцию бронирования из объекта transline в объекте gCoach. Используя метод bind, мы можем вызвать функцию book из объекта transline следующим образом:

На консоль будет выведено следующее:

Теперь предположим, что мы хотим создать бронирование для нескольких пассажиров для определенной автобусной компании (gCoach) с определенным номером автобуса (23). Мы бы достигли этого следующим образом:

В приведенном выше фрагменте мы передали первый параметр в функцию книги (busNum), а затем мы передали второй аргумент (passengerName). Этот метод передачи первого параметра в функцию называется частичным применением, что означает, что часть аргументов исходной функции уже установлена.

На консоль будет выведено следующее:

Давайте теперь посмотрим, как мы можем использовать метод связывания с прослушивателями событий.

Начнем с добавления нового свойства к объекту transline, установив количество автобусов равным 50 (transline.buses = 50), и добавим еще один новый метод. для добавления количества автобусов, когда мы нажимаем кнопку (this.buses++)следующим образом:

Давайте теперь присоединим наш обработчик событий к этому свойству следующим образом:

Когда мы нажимаем кнопку на веб-странице, в консоли выводится следующее:

Однако это не тот результат, которого мы ожидали. вывод this.planes теперь NaN. Причина этого вывода в том, что это ключевое слово является элементом кнопки. Это связано с тем, что в функции обработчика событий ключевое слово this всегда указывает на элемент, к которому прикреплен этот обработчик. Обработчик в данном случае — transline.buyBuses, который присоединен к элементу document.querySelector(“button”). Поэтому внутри функции transline.buyBuses ключевое слово this будет указывать на элемент кнопки. Вот почему ключевое слово this возвращает ‹button class="myButton"›Button‹/button›. Однако нам нужно, чтобы ключевое слово this указывало на сам объект transline, чтобы получить ожидаемый результат.

Чтобы решить эту проблему, мы можем просто добавить метод привязки следующим образом:

Когда мы нажмем кнопку на веб-странице, на консоль будет выведено следующее: