gpt4 book ai didi

javascript - 继承自的标准浏览器 EventDispatcher 类

转载 作者:行者123 更新时间:2023-11-30 20:22:00 25 4
gpt4 key购买 nike

我经常从头开始用 JS 实现自己的 EventDispatcher 类。我想在浏览器的某处有一些针对 DOM 元素的实现,但 EventDispatchers 甚至对其他与 DOM 完全无关的东西也很有用。我可以从浏览器中继承任何标准类吗?我需要可以打电话的地方 addEventListener("event", listener) , removeEventListener("event", listener)dispatchEvent("event")我需要它来支持同一事件的多个监听器。有来自节点的 EventEmitter,但我对它不是很熟悉,我不知道它是否可以在浏览器中工作。我应该使用它并可能使用 browserify 之类的东西转译整个东西吗?

最佳答案

已经定义了一个接口(interface),为您提供所有 3 种方法,EventTarget

Spec

interface EventTarget {
void addEventListener(DOMString type, EventListener? callback, optional (AddEventListenerOptions or boolean) options);
void removeEventListener(DOMString type, EventListener? callback, optional (EventListenerOptions or boolean) options);
boolean dispatchEvent(Event event);
};

所以你需要做的就是从那个接口(interface)继承

class MyObject extends EventTarget {
myCallback(){
console.log('event triggered');
}
myCallback2(){
console.log('event2 triggered');
}
}

var obj = new MyObject;
obj.addEventListener('test',obj.myCallback);
obj.addEventListener('test',obj.myCallback2);
obj.dispatchEvent(new Event('test'))

关于javascript - 继承自的标准浏览器 EventDispatcher 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51352424/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com