Несмотря на то, что название этой статьи немного похоже на кликбейт, и вы можете спросить себя, что «это» имеет в виду, на самом деле оно довольно буквально. Ключевое слово this в JavaScript доставляет хлопот многим разработчикам и поначалу может сбивать с толку, поэтому давайте разберем его.

Определение MDN для этого: «Свойство контекста выполнения (глобального, функционального или eval), которое всегда является ссылкой на объект». Что это значит? Что ж, самый простой способ описать это поведение, на мой взгляд, — это посмотреть на примеры.

В этом первом примере мы смотрели на функцию, объявленную в глобальной области видимости. Здесь это будет оцениваться как «глобальный», если он работает в узле, или как окно, если он работает в браузере. Следующее наиболее распространенное и, возможно, самое легкое для понимания место — внутри объекта.

Здесь мы видим, что имя_функции объявлено внутри объекта, и, следовательно, это вернет объект. С этого момента все становится немного сложнее, и поэтому я хочу показать некоторые вещи, которые обычно сбивают людей с толку.

Здесь, несмотря на то, что наша функция обратного вызова вызывается внутри объекта2, она все еще определена и вызывается в глобальной области видимости.

Это только основы, и следующее, что я хотел бы сделать, это посмотреть на методы call(), bind() и apply(), а также что происходит с ключевым словом this со стрелочными функциями.