国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 洱源县| 莒南县| 凌源市| 镇平县| 垦利县| 沾益县| 凤阳县| 漠河县| 舟曲县| 海口市| 安福县| 沁源县| 封丘县| 永和县| 镇原县| 绥中县| 肥西县| 新乡市| 连云港市| 安阳市| 松滋市| 谷城县| 和龙市| 北票市| 稻城县| 易门县| 浙江省| 离岛区| 定西市| 蓬莱市| 浦北县| 集贤县| 阿尔山市| 中西区| 托克托县| 巴中市| 西乡县| 牟定县| 富顺县| 赤水市| 福鼎市|