亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

JavaScript中EventBus實現對象之間通信

瀏覽:106日期:2023-10-10 17:15:19

一、什么是EventBus?

我個人理解:EventBus 可以實現對象之間的通信,當數據或某些特性發生改變時,能自動監聽事件作出一些改變。還有更多的內容可能我還沒有拓寬。怎么實現通信呢?這里通過一個例子可以理解到其中的精髓。

二、一個簡單的例子

add(){ data+=1; render(data);},minus(){ data-=1; render(data);},multiply(){ data*=2; render(data);},divide(){ data/=2; render(data);},

以上代碼是進行加減乘除的運算,數據data改變后,對數據data進行渲染,調用到渲染函數render();

有沒有覺得這樣很麻煩,代碼重復非常多,但是想表達的意思就是一個:data 只要進行更新,就調用一次渲染函數render()

問題來了:有沒有辦法簡化呢?只要data一改變,就自動調用render()函數

三、代碼演示實例

const eventbus=$({}); // 使用jQuery庫創建了一個eventbus。let xx = { data:{ n:100, }}updata(data){ Object.assign(xx.data,data); //批量賦值 eventbus.trigger(’updataed:xx.data’); //觸發事件,事件名為:’updataed:xx.data’}/* 調用jquer封裝的事件監聽函數 */eventbus.on(’updataed:xx.data’,()=>{ render(xx.data);})/* 改進后的加減乘除函數 */add(){ updata({n:xx.data.n+1});},minus(){ updata({n:xx.data.n-1});},multiply(){ updata({n:xx.data.n*2});},divide(){ updata({n:xx.data.n/2});}

只要一調用updata()函數,就會使eventbus.trigger(’updataed:xx.data’)觸發,然后事件監聽就會觸發,自動調用render()函數進行渲染

四、使用class 封裝+繼承EventBus

class EventBus{ constructor(){ this.eventbus=$(window); //使用jquery將eventbus掛載到全局window上 } on(eventName,fn){ this.eventbus.on(eventName,fn); } trigger(eventName){ this.eventbus.trigger(eventName); } off(eventName,fn){ this.eventbus.off(eventName,fn); }}const eventbus=new EventBus();eventbus.trigger(’updated:xx.data’)eventbus.on(’updated:xx.data’,()=>{ render(xx.data);})eventbus.off(’updated:xx.data’)/* 繼承EventBus */class module extends EventBus{ constructor(){ super(); //必須繼承父類的構造函數constructor }}module.trigger(’updated:xx.data’)module.on(’updated:xx.data’,()=>{ render(xx.data);})module.off(’updated:xx.data’)

為何要進行class 封裝和繼承EventBus?

答:為了讓代碼更加格式化,不僅在這里能用到EventBus,在其他地方也能使用上。尤其在模塊化的操作中,封裝+繼承這些就顯得十分的重要。這樣能讓代碼有更好的維護性。其他模塊使用到eventbus時的還能有更多的變樣,可以覆蓋重寫父類方法或者再添加一些方法。

到此這篇關于JavaScript中EventBus實現對象之間通信的文章就介紹到這了,更多相關JavaScript EventBus對象通信內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 色偷偷亚洲第一成人综合网址 | 一级特级毛片 | 未成人做爰视频www 未成人禁止视频高清在线观看 | 美女拍拍拍免费视频观看 | 色琪琪久久se色 | 麻豆md国产在线观看 | 久久久久久久国产视频 | 免费播放成人生活片 | 久久国产亚洲精品 | 91精品一区二区三区在线观看 | 欧美另类69xxxxx免费 | 又黄又爽又猛午夜性色播在线播放 | 1024.1024亚洲 国产 图片 1024cao社区榴地址一地址二 | 国产成人精品免费视频大全软件 | 黄色小网站在线观看 | 欧美三级在线看中文字幕 | 久久精品图片 | 亚洲国产品综合人成综合网站 | 国产成人yy免费视频 | 成年人激情网站 | 国产成人啪精品午夜在线观看 | 久操视频免费 | 中文字幕第99页 | 国产一区日韩二区欧美三区 | 中国黄色免费网站 | 91一区二区视频 | 午夜视频在线观看一区 | 99国产精品欧美久久久久久影院 | 亚洲无线视频 | 国产美女一区精品福利视频 | 亚洲欧美日韩综合在线一区二区三区 | 搞黄视频网站 | 国产精品亚洲一区二区三区久久 | 精品国内一区二区三区免费视频 | 精品老司机在线视频香蕉 | 久久久久久免费一区二区三区 | 美女一级黄色片 | 国产产一区二区三区久久毛片国语 | 欧洲亚洲欧美国产日本高清 | 中国人xxxxx18| 高中生福利视频在线观看 |