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

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

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

廢話不多說,直接上代碼

//發(fā)布訂閱模式
class EventEmiter{
  constructor(){
    //維護(hù)一個(gè)對象
    this._events={

    }
  }
  on(eventName,callback){
    if( this._events[eventName]){
      //如果有就放一個(gè)新的
      this._events[eventName].push(callback);
    }else{
      //如果沒有就創(chuàng)建一個(gè)數(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);
      //此時(shí)emit觸發(fā)會(huì)執(zhí)行此函數(shù),會(huì)給這個(gè)函數(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) //失戀 ,綁定一個(gè)函數(shù)方法
man.on('失戀',saveMoney)//失戀 ,綁定一個(gè)函數(shù)方法
man.removeListener('失戀',saveMoney); //移除一個(gè)函數(shù)方法
man.emit('失戀');
//綁定一次,觸發(fā)多次,也只執(zhí)行一次。觸發(fā)后一次將數(shù)組中的哪一項(xiàng)刪除掉下次觸發(fā)就不會(huì)執(zhí)行

以上這篇js 發(fā)布訂閱模式的實(shí)例講解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

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

    javascript 實(shí)現(xiàn) 秒殺,團(tuán)購 倒計(jì)時(shí)展示的記錄 分享

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

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

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

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

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

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

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

    Webkit的跨域安全問題說明

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

    GoJs中標(biāo)題和縮略圖使用技巧

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

    JavaScript 垃圾回收機(jī)制分析

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

    webpack3升級(jí)到webpack4遇到問題總結(jié)

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

    js讀寫json文件實(shí)例代碼

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

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

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

最新評論