addEventListener如何在引擎盖下工作?

时间:2015-11-25 10:28:24

标签: javascript dom

var elem=document.getElementById('mydiv');
elem.addEventListener('click',function(){...});

执行上述代码后,elem HTMLDivElement 接口的实例。我的大问题是addEventListener()方法究竟是做什么的。它在哪些DOM对象中注册了侦听器以及它是如何执行的(它更改了这些DOM对象的哪些属性)。换句话说,我想知道elem如何通知添加一个监听器,它的哪些属性(所有属性都归结为其原型链)都会受到影响。例如,我知道Event.prototype具有关键属性,如typetarget;但我无法用elem ...

“连接”它们

我不想找到哪个事件侦听器附加到上面的DOM节点。我想知道内部程序。

谢谢

1 个答案:

答案 0 :(得分:1)

  

执行上述代码后,elem是 int[] id; ... Array.Resize(ref id, id.Length + 1); id[id.Length - 1] = 123; 接口的实例。我的大问题是HTMLDivElement方法到底是做什么的。

     

在哪个DOM对象中注册侦听器

在调用addEventListener()的DOM元素上。 (当然,关于子元素的事件可能会冒泡)。

  

以及它是如何做到的(它改变了这些DOM对象的哪些属性)

它是如何做到的内部实现细节。它不会更改DOM对象的用户可见属性。

  

换句话说,我想知道elem是如何被告知增加一个听众的

不是。

  

它的哪些属性(所有这些属性都归结为其原型链)受到影响

他们都不是。

  

例如,我知道Event.prototype具有类型,目标等关键属性;但我无法连接"他们用elem ......

这些是addEventListener上的属性,与Event无关。