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