欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年09月10日 08:19:24   作者:八bug哥哥  
下面小編就為大家?guī)硪黄猨s 發(fā)布訂閱模式的實例講解。小編覺得挺不錯的,現(xiàn)在就想給大家,也給大家做個參考。一起跟隨小編過來看看吧

廢話不多說,直接上代碼

//發(fā)布訂閱模式
class EventEmiter{
  constructor(){
    //維護一個對象
    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]){
      //當前數(shù)組和傳遞過來的callback相等則移除掉
      this._events[eventName]=
        this._events[eventName].filter(item=>item!==callback);
    }
  }
  once(eventName,callback){
    function one(){
      //在one函數(shù)運行原來的函數(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)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • javascript 實現(xiàn) 秒殺,團購 倒計時展示的記錄 分享

    javascript 實現(xiàn) 秒殺,團購 倒計時展示的記錄 分享

    這篇文章介紹了javascript 實現(xiàn) 秒殺,團購 倒計時展示的記錄方法,有需要的朋友可以參考一下
    2013-07-07
  • 前端實現(xiàn)CSV文件解析的方法詳解

    前端實現(xiàn)CSV文件解析的方法詳解

    這篇文章主要為大家詳細介紹了前端實現(xiàn)CSV文件解析的相關方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以了解一下
    2024-03-03
  • JavaScript中實現(xiàn)繼承的三種方式和實例

    JavaScript中實現(xiàn)繼承的三種方式和實例

    這篇文章主要介紹了JavaScript中實現(xiàn)繼承的三種方式和實例,本文講解了類式繼承、原型式繼承、使用擴充方法實現(xiàn)多重繼承三種方式,需要的朋友可以參考下
    2015-01-01
  • JS數(shù)組扁平化(flat)方法總結詳解

    JS數(shù)組扁平化(flat)方法總結詳解

    這篇文章主要介紹了JS數(shù)組扁平化(flat)方法總結詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,,需要的朋友可以參考下
    2019-06-06
  • Webkit的跨域安全問題說明

    Webkit的跨域安全問題說明

    在使用try catch處理iframe跨域產(chǎn)生的異常時,chrome和safari瀏覽器似乎不能正常運作:他們直接拋出了錯誤而沒有拋出可供JS截獲的異常。
    2011-09-09
  • GoJs中標題和縮略圖使用技巧

    GoJs中標題和縮略圖使用技巧

    這篇文章主要為大家介紹了GoJs中標題和縮略圖使用技巧詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-05-05
  • JavaScript 垃圾回收機制分析

    JavaScript 垃圾回收機制分析

    同C# 、Java一樣我們可以手工調用垃圾回收程序,但是由于其消耗大量資源,而且我們手工調用的不會比瀏覽器判斷的準確,所以不推薦手工調用垃圾回收
    2013-10-10
  • webpack3升級到webpack4遇到問題總結

    webpack3升級到webpack4遇到問題總結

    這篇文章主要介紹了webpack3升級到webpack4遇到問題總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • js讀寫json文件實例代碼

    js讀寫json文件實例代碼

    json文件想必大家對它并不陌生吧,它的靈活性還是不錯的,下面為大家介紹下js如何讀寫json文件
    2014-10-10
  • JS生成和下載二維碼的代碼

    JS生成和下載二維碼的代碼

    本文給大家分享一段js代碼關于生成和下載二維碼功能,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧
    2016-12-12

最新評論