zoukankan      html  css  js  c++  java
  • js通过闭包实现多个相同事件只需绑定一次

    // 闭包的使用场景:一个方法要被多次调用,并且共享一个数据
    
    //               防抖和节流
    // 自执行函数省去单独调用一次
    let addEvent = (function() {
        let obj = {};
        return function(eventName,fns){
            if(obj[eventName] && obj[eventName].length>0){
                obj[eventName].push(fns);
            }else {
                obj[eventName] = [];
                obj[eventName].push(fns);
                // 相当于每次添加一个新事件,则给这个事件绑定对应的事件,因为引用的obj是引用类型,之后每次obj修改,则会同步更新进来
                document.addEventListener(eventName,function () {
                    for(let fn of obj[eventName]){
                        fn();
                    }
                })
            }
        }
    })()
    addEvent('mouseover',function () {
        console.log("鼠标进入")
    })
    addEvent('click',function () {
        console.log("click1")
    })
    addEvent('click',function () {
        console.log("click2")
    })
    addEvent('click',function () {
        console.log("click3")
    })
    addEvent('click',function () {
        console.log("click4")
    })
  • 相关阅读:
    python+hadoop=?
    Fluentd: The Missing Log Collector
    hadoop streaming 记录
    valgrind备忘
    [hadoop源码阅读][9]mapreduce概论
    GNU Binutils工具
    vim encoding
    [hadoop源码阅读][8]datanodedatanode
    Webdis: HTTP + JSON API for Redis
    gdb 小备注
  • 原文地址:https://www.cnblogs.com/beileixinqing/p/12938519.html
Copyright © 2011-2022 走看看