JavaScript Class 上的自定义事件

Custom Event on JavaScript Class

如何创建附加到 class 对象的事件?

我必须创建一个 class,其中包含一个应在特定时间调用的事件。 class 看起来像这样,并且应该在添加新事件时调用事件 newMember。有效的是我将自定义事件附加到 window 并调用它,这不是我的目标。

不是 NodeJS。

class Room {
    constructor() {
        this.members = {}
    }
    addMember(data) {
        if (!this.members[data.remotesid]) {
            this.members[data.socket] = data.identity
            //this.dispatchEvent();
        } else {
            console.log('Member already in room')
        }
    }
}

在被告知我需要用 EventTarget 扩展我的 class 之后。我现在已经找到了这个可行的解决方案。

class Room extends EventTarget {
    #event;
    constructor() {
        super();
        this.members = {}
    }
    addMember(data) {
        if (!this.members[data.remotesid]) {
            this.members[data.socket] = data
            this.#event = new CustomEvent("newMember", { detail: data });
            this.dispatchEvent(this.#event);
        } else {
            console.log('Member already in room')
        }
    }
}


var room = new Room();

room.addEventListener("newMember", function (e) {
    console.log("newMember event ", e);
});