Помогите пожалуйста пролить свет на таинственную природу addEventListener() . Хотелось бы в общих чертах понять его работу. Далее я в очень упрощённом и схематичном виде представлю своё понимание. А вы пожалуйста поправьте меня, если буду не прав.
Рассмотрим
такой простейший код навешивания обработчика на html-элемент:
<div id="btn">click me</div>
const btnEl = document.getElementById('btn');
console.dir(btnEl);
btnEl.addEventListener('click', (e) => {
console.log('clicked', e);
});
- Так как любой html-элемент это объект, то видно, что
- у объекта вызывается метод addEventListener()
- в который передаётся два аргумента
- непосредственно у элемента #btn нет метода addEventListener(),
- поэтому поднимаемся по цепочке прототипов и находим его
- ок. этот метод принял два аргумента и теперь делает с ними что-то типа(далее схематичный код) такого:
function addEventListener(action, callback) {
switch (action) {
case 'click':
callback();
break;
case 'mouseover':
alert('bla bla');
break;
....
....
...
}
}
Это верный в общих чертах ход мысли? Я не пропустил чего-нибудь важного?
UPD1:
Новая версия моего хода мысли здесь:
JSFIDDLE
UPD2:
Вот упрощённая модель с моей точки зрения:
JSFIDDLE