zoukankan      html  css  js  c++  java
  • 面向对象:自定义事件

    class MyEvent {
            constructor() {
       //给实例化对象添加一个’handle‘属性  值为数组,里面存放自己的函数 类似 let handle = { "myevnet":[fn1,fn2,fn3.....] };
                this.handle = { };
            }
      //绑定(添加)事件   参数:事件名,方法名
            addEvent(eventName, fn) {
        //判断 如果这个事件不存在 给它变为一个空数组
                if (typeof this.handle[eventName] === 'undefined') {
                    this.handle[eventName] = [];
                }
        //如果有的话就把fn这个方法放进数组
                this.handle[eventName].push(fn);
            }
      //触发事件  
            trigger(eventName) {
        //遍历 handle 里面对应的事件 让event (每一项即对应的方法)执行
                this.handle[eventName].forEach(event => {
                    event && event();//存在并执行
                })
            }
      //移出事件  参数:事件名,方法名  
            removeEvent(eventName, fn) {
       //遍历 handle 里面的事件 如果里面的i === fn 则利用数组的splice方法删除fn 并break
                for (let i = 0; i < this.handle[eventName].length; i++) {
                    if (this.handle[eventName][i] === fn) {
                        this.handle[eventName].splice(i, 1);
                        break;
                    }
                }
            }
        }
        let newEvent = new MyEvent();
     //绑定事件 
     addEvent("myevent",fn1);
     //触发事件
     trigger("myevent");
     //移出事件
     removeEvent("myevent",fn2);
  • 相关阅读:
    appium学习【五】【转】appium实现屏幕向左滑动
    ConfigParser模块用法
    python中的join()函数的用法
    python from import与import as 的含义
    python的termcolor模块
    python标准输入,标准输出,标准错误
    lambda匿名函数
    【二代示波器教程】第13章 RTX操作系统版本二代示波器实现
    【二代示波器教程】第12章 示波器设计—DAC信号发生器的实现
    【二代示波器教程】第11章 示波器设计—功能模块划分
  • 原文地址:https://www.cnblogs.com/jzbs/p/11850838.html
Copyright © 2011-2022 走看看