【生意多】-免费发布分类信息
当前位置: 首页 » 新闻 » 教程 » 操作系统 » 正文

浏览器自定义事件(自定义事件js)

放大字体  缩小字体 发布日期:2022-06-30 18:03:33    浏览次数:5
class MyEvent<T> extends CustomEvent<T> {     public static readonly CMD: string = "EVENT_NAME";    public constructor($type: string , $data: T ) {         super( $type , { detail: $data, bubbles: true, cancelable: true, composed: true });    }}class MyDispatch extends EventTarget {     private static _instance: MyDispatch;    public static get Instance(): MyDispatch {         if (!MyDispatch._instance) MyDispatch._instance = new MyDispatch();        return MyDispatch._instance;    }    public send<T>($data: T, $type: string = MyEvent.CMD): void {         const $event: CustomEvent = new MyEvent<T>($type, $data);        this.dispatchEvent($event);    }}class Test {     public constructor() {         MyDispatch.Instance.addEventListener(MyEvent.CMD, this.onEvent as EventListener);    }    private onEvent($e: MyEvent<ITest>): void {         console.log(`target  ${$e.target}`);        console.log(`name: ${$e.detail._name} , occupation: ${$e.detail._occupation}`);    }}interface ITest {     _name: string;    _occupation: string;}let $test: Test = new Test();MyDispatch.Instance.send<ITest>({ _name: `Aonaufly`, _occupation: `it` });

 
(文/小编)
打赏
免责声明
• 
本文为小编原创作品,作者: 小编。欢迎转载,转载请注明原文出处:https://www.31duo.com/news/show-3574104.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们。
 

(c)2016-2019 31DUO.COM All Rights Reserved浙ICP备19001410号-4

浙ICP备19001410号-4