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中自定義事件
相關文章
- JavaScript自定義事件JavaScript事件
- 繫結自定義事件事件
- Android自定義OnTouch事件Android事件
- 自定義事件提醒程式事件
- WPF 自定義附加事件事件
- WPF自定義路由事件路由事件
- jquery自定義事件的使用jQuery事件
- js 建立和觸發事件 和 自定義事件JS事件
- 自定義事件相容處理物件事件物件
- js發起自定義事件CustomEventJS事件
- 元件間通訊--自定義事件元件事件
- 080 元件自定義事件-繫結元件事件
- 自定義一個事件聚合器事件
- ASPxGridView中Command列自定義按鈕點選事件概要View事件
- Netty中自定義事件處理程式和監聽器Netty事件
- 在vue專案中自定義事件匯流排eventHubVue事件
- 自定義View事件之進階篇(四)-自定義Behavior實戰View事件
- 自定義View事件篇進階篇(二)-自定義NestedScrolling實戰View事件
- vue router路由自定義後退事件Vue路由事件
- JS觀察者模式-自定義事件JS模式事件
- js自定義Android端手勢事件JSAndroid事件
- 自定義事件實現子傳父事件
- 自定義View以及事件分發總結View事件
- 1.22 JQuery5:繫結自定義事件jQuery事件
- 前端自定義類事件回撥封裝前端事件封裝
- JavaScript自定義滾動條詳解JavaScript
- 由自定義事件到vue資料響應事件Vue
- element-ui - 原始碼學習 - 自定義事件UI原始碼事件
- Vue自定義元件事件傳遞:EventBus部分Vue元件事件
- Android 自定義View:處理事件分發(四)AndroidView事件
- 如何實現swipe、tap、longTap等自定義事件事件
- Vue中自定義指令Vue
- JavaScript實現自定義的生命週期JavaScript
- Laravel Admin 自定義 JavaScript 的正確方式?LaravelJavaScript
- Javascript中的事件物件和事件型別JavaScript事件物件型別
- element-UI change 事件傳遞自定義引數UI事件
- Flutter自定義折線圖並新增點選事件Flutter事件
- 帶你自定義實現Spring事件驅動模型Spring事件模型