Из-за контекста и лексической области видимости Лексическая область действия и контекст выполнения в javascript. В javascript каждая функция (не стрелка) имеет контекст выполнения, где, как ES6 функции стрелок не имеют своего собственного контекста выполнения.
для функций конструктора, когда мы запускаем их с помощью нового, движок javascript создает для него контекст выполнения, и вы назначаете его ему. но для неконструктивных функций, если они не вызываются с использованием function.Call или function.Apply, т. е. это не установлено, тогда из-за лексической области видимости они получают область окна, являющуюся самой внешней областью действия.
попробуйте console.log(this)
в консоли браузера, это выведет окно (так как это родительский объект или самая внешняя область в DOM).
также взгляните на это .
Как работает ключевое слово "this"?