zoukankan      html  css  js  c++  java
  • node.js的on、emit、off封装

    //绑定事件、触发事件和移除事件
    //绑定事件
    //on(eventName,cb){}
     
    //第一步判断当前事件是否存在,如果不存在则初始化:key:[],然后在将回调函数添加到数据中去
    let eventList = {};//所有事件的集合
    const $on=(eventName,cb)=>{
        if(!eventList[eventName]){//如果当前事件不存在
            eventList[eventName] = [];//则初始化
        }
        eventList[eventName].push(cb)
    }
    
    //触发事件
    //emit(eventName,params){}
     
    //第一步判断事件名称是否存在,如果存在则遍历数组中的所有函数调用即可,如果params存在则将params传递函数中
    const $emit = (eventName,params)=>{
        if(eventList[eventName]){//如果事件存在
            let arr = eventList[eventName];
            arr.map((cb)=>{//遍历数组中的所有回调函数
                cb(params)
            })
        }
    }
    
    //解绑事件
    //off(eventName,cb){}
    
    //第一步判断事件名称是否存在,如果存在,再次判断第二个参数是否存在,如果存在将这个cb从当前数组中移除,如果第二个参数不存在则清空数据
    const $off = (eventName,cb)=>{
        if(eventList[eventName]){//如果事件存在
            if(cb){//且回调函数存在
                let index = eventList[eventName].indexOf(cb);
                eventList[eventName].splice(index,1);//删除此回调函数
            }else{//若回调函数不存在,清空整个数组
                eventList[eventName].length = 0;   
            }
        }
    }
  • 相关阅读:
    nginx:配置详细说明
    linux:/etc/rc.local 不能自动启动问题
    nginx:403 forbidden 二种原因
    nginx:虚拟主机配置
    linux:lnmp环境搭建
    php:mysqli扩展
    linux:磁盘的分割、检验、格式化与挂载
    webpack
    js的window.onscroll事件兼容各大浏览器
    js window事件解析(转载)
  • 原文地址:https://www.cnblogs.com/Leslie-Cheung1584304774/p/10529896.html
Copyright © 2011-2022 走看看