今天早晨从酒店出来,外面下着鹅毛大雪,我的妈呀,我来的时候只穿了一件秋衣,昨天晚上好像所有的天气预报都没有报告今天会下雪,我操,我们的天气预报的仙人们天天在那里说的跟真的一样,这不是骗人吗,但是也没有办法,只能自己想办法怎么能事自己变得更暖和些。
JavaScript中的事件也是如此,浏览器内置的事件不可能帮你把所有的事情都做了,因此遇到特殊事件,必须我们自定义把他实现,那么我们就来来看百度有啊前端JavaScript框架的自定义事件是如何实现的。
在百度有啊的前端js框架中自定义事件对象主要定义了:
_srcObjes:事件源集合
_registeredEvents:事件处理器集合
observe:用于监听事件处理器的方法
stopObserving:停止监听事件处理器
fireEvent:触发事件处理器
下面对这些属性和方法逐一进行分析:
首先声明了CustEvent,并定义了用于存放事件源对象和事件处理器的两个集合对象
在监听事件时:
1. 每个对象上可以注册多个事件
2. 每个事件可以有多个事件处理器,同名的事件处理器会被覆盖掉
在停止监听时:
1.如果指定处理器名称,则只删除该处理器,否则把参数指定事件的所有处理器都删除
2.如果参数指定的对象中没有事件处理器,就把事件源和注册的事件对象全部删除。
触发事件时:
1.如果是浏览器内置事件,直接只执行就可以了。
2.如果是自定义事件,那么就分别执行每个处理器。
以上就是百度有啊前端js框架中的自定义事件的实现。如果大家有兴趣可以去研究下jQuery,
和yui中的自定义事件。(尤其是yui3.0中的自定义事件也支持捕获和冒泡,相当牛逼的)