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

首頁 > 語言 > JavaScript > 正文

js 發布訂閱模式的實例講解

2024-05-06 15:27:00
字體:
來源:轉載
供稿:網友

廢話不多說,直接上代碼

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

以上這篇js 發布訂閱模式的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 博爱县| 喜德县| 福清市| 平昌县| SHOW| 崇文区| 离岛区| 柘城县| 甘泉县| 南乐县| 会东县| 郁南县| 宣威市| 鄯善县| 九江县| 南汇区| 紫云| 射洪县| 鄂托克前旗| 象州县| 友谊县| 井冈山市| 商都县| 甘洛县| 漾濞| 四子王旗| 剑川县| 西昌市| 华安县| 龙游县| 怀来县| 泊头市| 八宿县| 彭山县| 抚顺县| 乐平市| 郓城县| 璧山县| 花莲市| 崇文区| 息烽县|