js 自定义事件
自定義事件很難派上用場?
為什么自定義事件很難派上用場,因為以前js不是模塊化開發(fā),也很少協(xié)作。因為事件本質是一種通信方式,是一種消息,只有存在多個對象,多個模塊的情況下,才有可能需要用到事件進行通信。而現(xiàn)在有了模塊化之后,已經(jīng)可以使用自定義事件進行各模塊間協(xié)作了。
哪里用得到自定義事件?
事件本質是一種消息,事件模式本質上是觀察者模式的實現(xiàn),那么用得上觀察者模式的地方,自然也可以也可以用上事件模式。所以,如果:
1、一個目標對象改變,需要多個觀察者調整自身的。
比如:我需要元素A點擊之后,元素B顯示鼠標的位置,元素C顯示提示,元素D.....2、分模塊協(xié)作需要解耦的
比如:甲負責模塊A,乙負責模塊B,模塊B需要A運行完之后才能運行傳統(tǒng)的寫法將邏輯寫在一個方法里面:
function doSomething(){A();B(); }這樣做每次擴展都要修改a的點擊函數(shù),不好擴展。
自定義事件的寫法
//1、創(chuàng)建事件 var clickElem = new Event("clickElem");//2、注冊事件監(jiān)聽器 elem.addEventListener("clickElem",function(e){//干點事 })//3、觸發(fā)事件 elem.dispatchEvent(clickElem);可以看到,elem通過dispatchEvent方法觸發(fā)的事件,只有elem上注冊的監(jiān)聽器才能監(jiān)聽得到。這就很沒意思了,自己發(fā)給自己消息,通知自己去干什么。
創(chuàng)建自定義事件可參考: MDN : Creating_and_triggering_events
總結
- 上一篇: [pytorch、学习] - 3.7 s
- 下一篇: c51单片机跑马灯汇编语言,单片机的跑马