zoukankan      html  css  js  c++  java
  • events 事件的绑定on,事件的触发emit,事件的移除off的一看就懂的封装方法

    //存放事件
        eventList = {
            key:val
            handle:[]
        }



        1对多
        on(eventName,callback);
            handle:-------N多个
        1、判断事件名称是否存在

        2、如果存在的情况下将cb存放在eventName这个数组当中

        3、如果不存在创建key值为eventName val值为数组



        1对多
        emit(eventName,params);

        当调用emit的时候获取到eventName这的值,对值判断,如果值不存在直接return
        如果存在遍历这个值全局进行调用,然后将params传入这些函数




        off(eventName,[callback])
        当调用off的时候获取到eventName这的值,对值判断,如果值不存在直接return
        如果存在判断callback是否存在  如果存在删除指定的函数
        如果不存在将当前数组清空


    */

    const EventList = {

    }

    1.事件的绑定
    const on = function(eventName,callback){
        if(!EventList[eventName]){
            EventList[eventName] = [];
        }

        EventList[eventName].push(callback);
    }

    2.事件的触发
    const emit = function(eventName,params){
        if(!EventList[eventName])return;

        EventList[eventName].map((cb)=>{
            cb(params)
        })
    }

    3.事件移除
    const off = function(eventName,callback){
        if(!EventList[eventName])return;

        if(callback){
            let index = EventList[eventName].indexOf(callback);
            EventList[eventName].splice(index,1);
        }else{
            EventList[eventName] = [];
        }
    }

  • 相关阅读:
    nginx通过配置防止DDoS攻击
    BZOJ 2120 数颜色(单点修改莫队)
    数论模板
    BZOJ 2002 [Hnoi2010]Bounce 弹飞绵羊(分块)
    HDU 4609 3-idiots(FFT)
    BZOJ 3527 [Zjoi2014]力(FFT)
    快速对拍
    HDU 1402 A * B Problem Plus(FFT)
    FFT
    BZOJ 5319: [Jsoi2018]军训列队(可持久化线段树)
  • 原文地址:https://www.cnblogs.com/zhouyingying/p/10567748.html
Copyright © 2011-2022 走看看