实现一个简单的 EventEmitter 类

推荐答案

-- -------------------- ---- -------
----- ------------ -
  ------------- -
    ----------- - ---
  -

  --------- --------- -
    -- --------------------- -
      ------------------ - ---
    -
    ----------------------------------
  -

  ----------- -------- -
    -- -------------------- -
      ----------------------------------- -- -------------------
    -
  -

  ---------- --------- -
    -- -------------------- -
      ------------------ - --------------------------- -- - --- ----------
    -
  -

  ----------- --------- -
    ----- ------------ - --------- -- -
      ------------------
      --------------- --------------
    --
    -------------- --------------
  -
-

本题详细解读

1. 类的初始化

  • EventEmitter 类在构造函数中初始化了一个 events 对象,用于存储事件及其对应的监听器。

2. on 方法

  • on 方法用于订阅事件。它接收两个参数:event(事件名称)和 listener(监听器函数)。
  • 如果 events 对象中还没有该事件的监听器数组,则创建一个空数组。
  • 将监听器函数添加到对应事件的监听器数组中。

3. emit 方法

  • emit 方法用于触发事件。它接收两个参数:event(事件名称)和 ...args(传递给监听器的参数)。
  • 如果 events 对象中存在该事件的监听器数组,则遍历数组并依次调用每个监听器函数,传入 ...args 作为参数。

4. off 方法

  • off 方法用于取消订阅事件。它接收两个参数:event(事件名称)和 listener(监听器函数)。
  • 如果 events 对象中存在该事件的监听器数组,则过滤掉与传入的监听器函数相同的函数。

5. once 方法

  • once 方法用于订阅一次性事件。它接收两个参数:event(事件名称)和 listener(监听器函数)。
  • 创建一个新的监听器函数 onceListener,在调用传入的监听器函数后,自动取消订阅该事件。
  • 使用 on 方法将 onceListener 添加到对应事件的监听器数组中。
纠错
反馈