Почему объект и метод, которые пренадлежат window возвращают разный контекст?
Самое понятное видео на Youtube про this
setTimeout(() => {
obj.fn();
}, 500);

Просто почитайте про контекст в js и ключевое слово this.