javascript - 使用 “this” 或 “window” 分发自定义事件?
当我创建一个 web 组件(我特别使用 lit/lit-element)并触发一个自定义事件时,我可以:
从 window 派发事件:
const evt = new CustomEvent("my-custom-event", {detail: "some-data"});
window.dispatchEvent(evt);
或者从 Web 组件本身 (this) 派发事件:
const evt = new CustomEvent("my-custom-event", {detail: "some-data"});
this.dispatchEvent(evt);
有什么理由让我想做这个而不是那个吗?
答案#1
可以使用 window 作为事件分发器来分发自定义事件,并添加处理这些事件的处理程序。
window.addEventListener("xyz", event => console.log(event.detail));
event = new CustomEvent("xyz", {
detail: {
action: "didInitialize",
payload: 3
}
});
window.dispatchEvent(event);输出 :
{action: 'didInitialize', payload: 3}
该事件具有timeStamp以及所有常规事件属性。
