• Javascript中自定义事件


    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);
    
  • 相关阅读:
    ndk与jni学习
    2021杭电多校第十场题解
    2021杭电多校第九场题解
    2021杭电多校第八场题解
    2021杭电多校第七场题解
    2021杭电多校第六场题解
    2021杭电多校第四场题解
    2021杭电多校第五场题解
    2021杭电多校第三场题解
    2021杭电多校第二场题解
  • 原文地址:https://www.cnblogs.com/looyulong/p/10977249.html
Copyright © 2020-2023  润新知