ТУт все дело в том, как Вы используете функции. Все дело в том, что Function Declaration, Function Exoression, Arrow Function по разному оббрабатывают контекст (this).
В примере Вяечслава срабатывает потому, что у стрелочной функции () =>
нет своего контекста, те функция срабатывает в контексте класса. А если Вы используете просто function(){} то у этой функции переданной в Event Loop (грубо говоря очередь асинхронного кода) this теряется и начинает ссылаться на глобальный обьект, те уже на window. Ну а у обьекта window как Вы понимаете действительно нет этих методов.
В общем тут конечно можно долго отвечать, но надеюсь основная идея ясна.