Aves, ну я этого не писал. может ты перепутал, но не суть.
Тут смотри, может интерпретатор сразу устанавливает this как window при вызове setTimeout.
Допустим у addEventListener в функции обработчике this ссылается на элемент которому поставлен обработчик.
Значит это как то внутри функции релизованно, пример вот:
function addEventListener(string,func){
if (клик произошел){
func.bind(this, event)()
}
}