天天看點

#yyds幹貨盤點# 前端歌謠的刷題之路-第一百五十三題-釋出訂閱者模式

 前言

我是歌謠 我有個兄弟 巅峰的時候排名c站總榜19 叫前端小歌謠 曾經我花了三年的時間創作了他 現在我要用五年的時間超越他 今天又是接近兄弟的一天人生難免坎坷 大不了從頭再來 歌謠的意志是永恒的 放棄很容易 但是堅持一定很酷 本題目源自于牛客網 微信公衆号前端小歌謠

題目

 請補全JavaScript代碼,完成"EventEmitter"類實作釋出訂閱模式。

注意:

1. 同一名稱事件可能有多個不同的執行函數

2. 通過"on"函數添加事件

3. 通過"emit"函數觸發事件

#yyds幹貨盤點# 前端歌謠的刷題之路-第一百五十三題-釋出訂閱者模式
#yyds幹貨盤點# 前端歌謠的刷題之路-第一百五十三題-釋出訂閱者模式

​編輯

 核心代碼

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>釋出訂閱者模式</title>
</head>

<body>
  <script type="text/javascript">
    class EventEmitter {
      // 補全代碼
      constructor() {
        //記錄目前被訂閱的事件
        this.event = {};
      }
      //訂閱事件
      on(e, fn) {
        //是新事件
        if (!this.event[e]) {
          this.event[e] = [fn];
        } else {
          //舊事件添加新方法
          this.event[e].push(fn);
        }
      }
      //觸發事件
      emit(e) {
        if (this.event[e]) {
          this.event[e].forEach(fun => fun());

        }
      }
    }
  </script>
</body>

</html>      

繼續閱讀