Вот была неплохая
статья на Хабре с попытками разобраться с
this
в JavaScript.
- Первый случай, метод объекта – при непосредственном получении и вызове делает этот объект this'ом.
- Второй же случай — функция, внутри другой («да»), не стрелочная, «нет», «нет» ... «нет» —
this
равен глобальному объекту. Если включить строгий режим, вместо Window
получим undefined
.
Статья не столько объясняет (объясняет под спойлерами Комментарий), сколько предлагает алгоритм рассуждений, «таблицу умножения» для запоминания — чтобы предсказывать значение
this
.