日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

js 自定义事件

發(fā)布時間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 js 自定义事件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

自定義事件很難派上用場?

為什么自定義事件很難派上用場,因為以前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

總結

以上是生活随笔為你收集整理的js 自定义事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。