事件传播机制/事件委托/事件代理

事件传播机制分为三个阶段:

  • 第一阶段:从window对象传导到目标节点,称为“捕获阶段”
  • 第二阶段:在目标节点上触发,称为“目标阶段”
  • 第三阶段:从目标节点传导回window对象,称为“冒泡阶段”

事件委托(事件代理)本质上是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会上传到父节点,父节点可以通过事件对象获取到目标节点,因此可以把子节点的监听函数定义在父节点上,由父节点的监听函数统一处理多个子元素的事件,这种方式称为事件委托(事件代理)。

好处: 使用事件委托可以不必要为每一个子元素都绑定一个监听事件,这样减少了内存上的消耗。并且使用事件代理还可以实现事件的动态绑定,比如说新增了一个子节点,并不需要单独地为它添加一个监听事件,它绑定的事件会交给父元素中的监听函数来处理

缺点: 事件委托会影响页面性能,主要影响因素有:
1、元素中,绑定事件委托的次数;
2、点击的最底层元素,到绑定事件元素之间的DOM层数;

局限性: focus、blur之类的事件没有事件冒泡机制,所以无法实现事件委托;mousemove、mouseout 这样的事件,虽然有事件冒泡,但是只能不断通过位置去计算定位,对性能消耗高,因此也是不适合于事件委托的。

你可能感兴趣的:(javascript,开发语言,ecmascript)