首页 > 其他分享 >EventTarget的简单实现

EventTarget的简单实现

时间:2024-12-25 15:12:26浏览次数:1  
标签:实现 event EventTarget callback listeners 简单 type stack

mdn中EventTarget的简单实现代码

let EventTarget = function () {
    this.listeners = {};
}

EventTarget.prototype.listeners = null;

EventTarget.prototype.addEventListener = function (type, callback) {
    if (!(type in this.listeners)) {
        this.listeners[type] = [];
    }
    this.listeners[type].push(callback);
};

EventTarget.prototype.removeEventListener = function (type, callback) {
    if (!(type in this.listeners)) {
        return;
    }
    let stack = this.listeners[type];
    for (let i = 0, l = stack.length; i < l; i++) {
        if (stack[i] === callback) {
            stack.splice(i, 1);
            return this.removeEventListener(type, callback);
        }
    }
};

EventTarget.prototype.dispatchEvent = function (event) {
    if (!(event.type in this.listeners)) {
        return;
    }
    let stack = this.listeners[event.type];
    event.target = this;
    for (let i = 0, l = stack.length; i < l; i++) {
        stack[i].call(this, event);
    }
};

标签:实现,event,EventTarget,callback,listeners,简单,type,stack
From: https://www.cnblogs.com/xyzJoker/p/18630418

相关文章

  • 苹果iMessage群发协议,苹果iMessage短信,苹果iMessage推信,iMessage协议版自动群发完
    ======本文最后更新时间:2024年12月20日一、PC电脑版苹果系统(MacOS)上实现imessage群发总结为以下几种方式:/*MacOS苹果系统,正常情况下,只能安装到苹果公司自己出品的Mac电脑,俗称白苹果,不能安装到各种组装机或者其他品牌的品牌机上,黑苹果的的原理,就是通过一些“破解补......
  • VUE项目实现TINYMCE编辑器WORD图片上传
    编辑器:TinyMCE需求:复制粘贴word内容图片,图文混排,图片转存要求:开源,免费,技术支持前端:vue,vue2-cli,vue3-cli后端:java,jsp,springboot,asp.net,php,asp,.netcore,.netmvc,.netform平台:Windows,macOS,Linux,中标麒麟,银河麒麟,统信UOS,信创国产化CPU:x86(Intel,AMD,兆......
  • 基于Spring Boot的电影推荐系统的设计与实现
    目录项目介绍系统设计系统展示核心代码项目专栏推荐为什么选择我?获取源码项目介绍如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统电影推荐系统信息管理难......
  • 低代码后端 API 的实现方案:两种不推荐的模式
            昨天写了低代码后端API的实现方案与安全设计:从功能到鉴权的全面解析-CSDN博客,介绍了低代码后端API的主流实现方案。今天,让我们把目光聚焦于软件开发中另一个值得深入探讨的话题——前端直接写SQL语句和JavaScript脚本并传入后端执行。这种看似便捷的操......
  • 大模型简单入门及特定环境下的应用
    大模型简单入门及特定环境下的应用前排提示,文末有大模型AGI-CSDN独家资料包哦!什么是大模型大模型是指包含超大规模参数(通常在十亿个以上)的神经网络模型,具有以下特征:巨大的规模:大模型包含数十亿个参数,模型大小可以达到数百GB甚至更大。这种巨大的模型规模为其提供了强大......
  • Java Web入门到精通:简单留言板开发(附代码)
    ......
  • 一个超级简单的蓝牙小车制作
    前言:这是一个基于STM32的蓝牙小车制作过程,所用到的器件、代码都是超级基础的,只要跟着做,哪怕0基础也能做出一个蓝牙操控的小车。本项目所用的器件非常简单,两个L298N,四个直流电机,四个轮子和小车板,还有一个HC-05的蓝牙模块代码放在gitee仓库中:代码在这里项目原理:大体上来说,蓝......
  • 2024/12/25 任务【multi-objective optimization algorithm 多目标优化算法】解决问题
    知识点:Git配合Github的简单使用,硕士开题报告:选题意义(10分),难易程度(5分),对国内外现状的综述(5分)论文的开题报告,写好这些就够了!_哔哩哔哩_bilibili:写清楚研究方向研究的意义现在做到什么程度存在哪些问题你想怎么解决准备用哪些数据去验证你的成果参考文献Github新手够用指......
  • 在 UniApp 中使用Mixins混合方法实现微信支付与支付宝支付
    在UniApp中使用Mixins混合方法实现微信支付与支付宝支付目录前言在UniAp中集成支付功能时,我们经常需要根据不同的支付方式(如微信支付、支付宝支付)进行不同的处理。为了避免代码冗余和提升代码的可维护性,可以使用Vue的Mixins技术将支付逻辑提取到单独的混合文......
  • 实现左中右三栏布局有哪些方法?
    在前端开发中,实现左中右三栏布局有多种方法。以下是一些常见的方法:浮动布局(Float):左栏和右栏分别设置float:left;和float:right;,并设置相应的宽度。中间栏使用margin-left和margin-right属性来留出左栏和右栏的空间。注意清除浮动,以防止父元素高度塌陷。Flexbo......