国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > JS > 正文

js 發(fā)布訂閱模式的實例講解

2024-05-06 16:39:38
字體:
供稿:網(wǎng)友

廢話不多說,直接上代碼

//發(fā)布訂閱模式class EventEmiter{  constructor(){    //維護(hù)一個對象    this._events={    }  }  on(eventName,callback){    if( this._events[eventName]){      //如果有就放一個新的      this._events[eventName].push(callback);    }else{      //如果沒有就創(chuàng)建一個數(shù)組      this._events[eventName]=[callback]    }  }  emit(eventName,...rest){    if(this._events[eventName]){ //循環(huán)一次執(zhí)行      this._events[eventName].forEach((item)=>{        item.apply(this,rest)      });    }  }  removeListener(eventName,callback){    if(this._events[eventName]){      //當(dāng)前數(shù)組和傳遞過來的callback相等則移除掉      this._events[eventName]=        this._events[eventName].filter(item=>item!==callback);    }  }  once(eventName,callback){    function one(){      //在one函數(shù)運(yùn)行原來的函數(shù),只有將one清空      callback.apply(this,arguments);      //先綁定 執(zhí)行后再刪除      this.removeListener(eventName,one);    }    this.on(eventName,one);      //此時emit觸發(fā)會執(zhí)行此函數(shù),會給這個函數(shù)傳遞rest參數(shù)  }}class Man extends EventEmiter{}let man=new Man()function findGirl() {  console.log('找新的女朋友')}function saveMoney() {  console.log('省錢')}man.once('失戀',findGirl);//man.on('失戀',findGirl) //失戀 ,綁定一個函數(shù)方法man.on('失戀',saveMoney)//失戀 ,綁定一個函數(shù)方法man.removeListener('失戀',saveMoney); //移除一個函數(shù)方法man.emit('失戀');//綁定一次,觸發(fā)多次,也只執(zhí)行一次。觸發(fā)后一次將數(shù)組中的哪一項刪除掉下次觸發(fā)就不會執(zhí)行

以上這篇js 發(fā)布訂閱模式的實例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 奇台县| 修武县| 正阳县| 保德县| 宣武区| 共和县| 嵩明县| 扎囊县| 雷山县| 鄂温| 新干县| 东山县| 扬州市| 灵石县| 景宁| 灌阳县| 客服| 马龙县| 元氏县| 特克斯县| 黑龙江省| 天等县| 岳西县| 得荣县| 类乌齐县| 龙江县| 榆社县| 定边县| 射洪县| 普格县| 青岛市| 伊春市| 织金县| 牟定县| 赫章县| 英吉沙县| 牡丹江市| 电白县| 县级市| 南溪县| 三门峡市|