Каждый элемент HTML изначально является объектом. Каждый из этих объектов, когда он создается, имеет набор свойств, которые по сути делают его объектом. Так же, как у вас есть .value в текстовом поле, присущем его созданию, у вас есть несколько других функций, которые вам доступны, например .onClick.
Когда вы прикрепляете функцию к событию, вы получаете доступ к этому предварительно запеченному в функциональности.
Чтобы ответить на ваш вопрос, сама кнопка ожидает срабатывания функции onClick. Но то, что отправляет эту информацию в Button или DOM, - это Window. Окно - это экземпляр ваших Javascript, HMTL и CSS, запущенных в вашем браузере.
Итак, что происходит, окно знает, что вы щелкнули и где вы щелкнули. Затем он отправляет эту информацию в дом и спрашивает: «Есть ли там что-нибудь?» если есть, то он говорит: «Было ли это прослушивание события щелчка?» если оба эти условия соблюдены, запускается событие onClick.