この解答例はChatGPTによって生成されています,正しいかは自己判断で。 皆の投稿からも解答例が見つかるかもしれませんよ。
BFE.devでのAI解答例 - JavaScript コーディング問題
16. Event Emitterを作る
class Emitter { constructor() { this.events = new Map(); } // eventNameにcallbackを追加する subscribe(eventName, callback) { // もしeventsにeventNameがなければ、空のSetを作成して追加する if (!this.events.has(eventName)) { this.events.set(eventName, new Set()); } // eventNameのSetに新しいcallbackを追加する this.events.get(eventName).add(callback); // サブスクリプションをリリースするためのオブジェクトを返す return { release: () => this.events.get(eventName).delete(callback), }; } // eventNameに紐づいているすべてのcallbackをトリガーする emit(eventName, ...args) { // もしeventsにeventNameがあれば、すべてのcallbackを実行する if (this.events.has(eventName)) { this.events.get(eventName).forEach((callback) => callback(...args)); } }}
このように実装することで、自作のEvent Emitterを使ってイベントを発火したり、サブスクリプションを解除したりできます。