Если вы новичок в языке JavaScript, вы, вероятно, несколько раз ставили в тупик ключевое слово this. Я здесь, чтобы снять с вас это бремя и изложить его, надеюсь, очень простым для понимания способом.

Первое правило для понимания того, что, черт возьми, означает this в JavaScript, — точно знать, где была вызвана функция. Посмотрите на строку 9 во фрагменте кода, где вызывается функция.

Если вы можете сосредоточиться на контексте, его будет намного легче понять. Контекст означает просто «объект, которому принадлежит метод».

Метод speedUp принадлежит объекту car в приведенном выше фрагменте кода, поэтому speedUpзапускается в контексте объекта автомобиль объект.

Поскольку функция speedUp выполняется в контексте объекта car, она принадлежит объекту car, поэтому Ключевое слово 'this' будет относиться к объекту car.

Простой способ узнать, к чему относится этот, — посмотреть слева от точки, где вызывается функция. Все, что находится слева от точки, будет тем, чем является "это". Это верно, когда имеет место неявное связывание.

Что, если вам нужно знать, с чем связано this с помощью явной привязки? Происходит тот же мыслительный процесс.

Здесь мы используем метод .call, чтобы явным образом указать функции speedUp выполняться в контексте объекта car. . И угадайте, что? Мы знаем, что контекст означает объект, которому принадлежит метод. Поэтому мы прямо сказали функции speedUp, что хотим, чтобы вы принадлежали к объекту автомобиль. Теперь this будет объектом car.

Обратите внимание, что стрелочные функции будут игнорировать такие методы, как .call и .apply, поскольку они анонимны.

Найдите меня в Твиттере, если у вас есть другие варианты использования, которые вас смущают, я буду рад помочь.