Javascript中自定义事件
2019-06-05 01:04
1846 查看
class CustomEvent { constructor() { // { // eventName: []; // } this.eventsKeeper = {}; } isAssigned(name, cb) { const keeper = this.eventsKeeper; if (!cb) { return name in keeper; } else { return name in keeper && keeper[name].indexOf(cb) !== -1; } } on(name, cb) { const keeper = this.eventsKeeper; const cbs = keeper[name]; if (this.isAssigned(name, cb)) return; if (!cbs) { keeper[name] = [cb]; } else { keeper[name].push(cb); } } emit(name, ...rest) { if (this.isAssigned(name)) { this.eventsKeeper[name].forEach(cb => { cb(...rest); }); } else { throw Error(`you may not listen [${name}] event!`); } } remove(name) { if (!name) return; delete this.eventsKeeper[name]; } } // test // node test.js // const event = new CustomEvent(); // event.on("test", (first, second) => { // console.log(`${first} ${second}`); // console.log("it is ok"); // }); // event.on("test", () => { // console.log("it is line ok"); // }); // event.remove("test"); // event.on("line", () => { // console.log("it is line ok "); // }); // event.emit("line"); // setTimeout(() => { // event.emit("test", "hello", "world"); // }, 2000);
相关文章推荐
- javaScript自定义事件CustomEvent详解(二)intEvent 和 intiCustomEvent 的区别,及新式写法和老式写法的区别
- javascript自定义事件
- 浅谈JavaScript模拟事件和自定义事件
- javascript自定义事件和方法的区别
- javascript:自定义事件初探
- 如何在JavaScript中使用自定义事件
- Javascript自定义事件
- 50、JavaScript里面,自定义事件的简单实现(事件队列的简单实现)
- JavaScript使用自定义事件实现简单的模块化开发
- JavaScript自定义事件
- Javascript事件模型系列(四)我所理解的javascript自定义事件
- 你不知道的JavaScript--Item38 自定义事件
- JavaScript 自定义事件
- 扯扯javascript之自定义事件
- [js点滴]JavaScript自定义事件和时间模拟10
- Javascript 自定义事件
- javascript:自定义事件初探
- YUI事件:自定义事件,以及这几天对javascript编程的认识
- Javascript之自定义事件
- javascript自定义事件