国产探花免费观看_亚洲丰满少妇自慰呻吟_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 發布訂閱模式的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持錯新站長站。

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

圖片精選

主站蜘蛛池模板: 乐平市| 务川| 长宁县| 抚松县| 东城区| 丹巴县| 镇安县| 丁青县| 宿松县| 安吉县| 永新县| 易门县| 阳东县| 商河县| 磐安县| 阿尔山市| 讷河市| 无极县| 宜良县| 阿拉善左旗| 海丰县| 鹰潭市| 德阳市| 吉隆县| 盐山县| 衡水市| 吴桥县| 林甸县| 九龙坡区| 镇江市| 宁强县| 华池县| 新晃| 莆田市| 巍山| 洪湖市| 若羌县| 屏山县| 株洲市| 师宗县| 察隅县|