推荐答案
-- -------------------- ---- -------
----- ------------ -
------------- -
----------- - ---
-
--------- --------- -
-- --------------------- -
------------------ - ---
-
----------------------------------
-
----------- -------- -
-- -------------------- -
----------------------------------- -- -------------------
-
-
---------- --------- -
-- -------------------- -
------------------ - --------------------------- -- - --- ----------
-
-
----------- --------- -
----- ------------ - --------- -- -
------------------
--------------- --------------
--
-------------- --------------
-
-
本题详细解读
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
添加到对应事件的监听器数组中。