js函数重载

2023-11-15

 function createOverload(){
      var callMap=new Map();
      function overload(...args){
        const key=args.map((args)=>typeof args).join(',')//得到形如"string,number"的字符串
        const fn =callMap.get(key)//获取之前注册过的函数
        if(fn){
          return fn.apply(this,args)
        }
        throw new Error('no matching function')
      }
      overload.addImpl=function(...args){
        const fn=args.pop()
        if(typeof fn !=='function'){
          return
        }
        callMap.set(args.join(','),fn)
      }
      return overload
    }
const getUsers=createOverload()
getUsers.addImpl(()=>{
  console.log('======查询所有用户');
})
const searchPage=()=>{(page,size=10)=>{
  console.log('页码和每页数量',page,size)
}}
//当有2个条件需要使用同一个函数,上方的size默认值才显得有意义
getUsers.addImpl('number',searchPage)
getUsers.addImpl('number','number',searchPage)
getUsers.addImpl('string',(name)=>{
  console.log('======传入了一个字符串',name);
})
getUsers.addImpl('string','string',(name,name2)=>{
  console.log('======传入了2个都是字符串',name,name2);
})
getUsers('a','b')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js函数重载 的相关文章

  • 使用 setAttribute() 添加“onclick”函数

    为什么以下不起作用 显然该功能尚未添加 function activatetypeinput event devtype The function is called but it doesn t set the attribute var
  • 在 JavaScript 中生成 RSA 密钥对

    我最近发现了这个 RSA JavaScript 库 http www ohdave com rsa http www ohdave com rsa 但是 它要求预先生成密钥 这是我的问题 问题 我想在 JavaScript 中生成 RSA
  • javascript 中对象的“异步”循环

    通常 我们可以对数组和对象进行循环来迭代属性 值 但循环是阻塞的 但是 超时可用于模拟异步循环 我设法为数组做到了这一点 http jsfiddle net LHhy2 do stuff function asyncLoop i do st
  • 滚动时输入自动完成位置错误(chrome)

    我在输入文本的默认自动完成功能方面遇到了一些麻烦 滚动时它不会相应移动 我希望自动完成文本保留在输入的正下方 有办法做到这一点吗 我在 Chrome 浏览器版本 57 0 2987 133 中发生这种情况 fiddle https jsfi
  • 无法在 JavaScript for 循环中读取 null 的属性“长度”

    我正在尝试制作一个像 Stack Overflow 那样的 Markdown 编辑器 如果我实际上没有在文本区域中键入星号和包含短语的 http 我会收到标题中列出的此错误 如果我只输入包含星号的短语 则错误指的是这一行 if linkif
  • 通过pm2运行node.js,但经常重新启动:通过信号[SIGINT]以代码[0]退出

    我试图在我的系统上运行 node js 但遇到了这个问题 2016 06 01 20 46 28 App app with id 13 and pid 12633 exited with code 0 via signal SIGINT 2
  • 在 Javascript 中获取第一个数字出现后的子字符串

    我正在尝试提取第一个数字之后 并包括 的字符 ABC 123SD gt 123SD 123 gt 123 123SD gt 123SD ABC gt 我当前的解决方案如下 var string1 ABC 123SD var firstDig
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 如何动态突出显示网页上的字符串?

    我想创建带有 url 的页面 例如 http xyzcorp schedules 2015Aug24 Aug28 Jim Hawkins http xyzcorp schedules 2015Aug24 Aug28 Billy Bones
  • 无法实例化模块 [$injector:unpr] 未知提供程序:$routeProvider

    我从 AngularJS 升级时收到此错误1 0 7 to 1 2 0rc1 ngRoute 模块不再是核心的一部分angular js文件 如果您继续使用 routeProvider 那么您现在需要包括angular route js在你
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • 有没有办法将变量从 javascript 导入到 sass 或反之亦然?

    我正在制作一个依赖于块概念的 CSS 网格系统 所以我有一个基本文件 例如 max columns 4 block width 220px block height 150px block margin 10px 它被 mixin 使用 m
  • 了解 JavaScript - 资源

    使用 StackOverflow 的微型 Digit Blog 功能进行描述here https stackoverflow com about 我想发布以下我刚刚看到的 我觉得很有趣的谷歌技术谈话视频 我一直在理解 javascript
  • 为什么将 x 和 y 设置为 0 时 svg 文本会消失?

    我刚刚开始阅读有关svg我提出了以下问题 我正在创建一个简单的svg with a text里面如下图所示 从我的阅读中我了解到x and y of the text标签声明文本在标签内的位置svg space 为什么当我同时设置x and
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • IE 中的每个 JavaScript 支持?

    我有这个代码
  • 从输入类型编号获取无效值

    我正在使用输入类型数字 当它无效时 我如何从中获取值 例如 使用类型编号并仅打印 e 这本身是无效的 我正在使用 React 但我认为这个问题非常普遍 onChange event console log event target valu

随机推荐

  • Python 数组(Arrays)

    数组 Array 是有序的元素序列 若将有限个类型相同的变量的集合命名 那么这个名称为数组名 组成数组的各个变量称为数组的分量 也称为数组的元素 有时也称为下标变量 用于区分数组的各个元素的数字编号称为下标 数组是在程序设计中 为了处理方便
  • 为什么db是先写日志,而redis是后写日志

    预写式日志 Write Ahead Logging WAL 基本上所有的数据库都实现了这个WAL技术 来保证原子性和持久性 WAL的核心思想是 在数据写入到数据库之前 先写入到日志 这一定程度上也可以提高效率 因为不需要每次都和磁盘交互 可
  • 各种开源应用的实践经验

    在实际的项目中 很多地方需要用到开源项目 而现在的开源项目太多 从开源项目的首页去看的话 也未必能得到足够充分的信息 多数时候是选用淘汰法 选剩下两到三个项目然后自己再去一个一个地去试用 选择合适的开源组件确实是一件麻烦事 本文将记录下选择
  • Arthas 定位CPU跑满问题,源头竟是Apache Beanutils

    一 背景 大早上 线上k8s 机子 某个机子 cpu 飙高 导致k8s 健康检查失败 线上环境会自动执行jstack 上传到oss 通知到 钉钉告警群 直接分析锁 cpu 高的线程 二 过程分析 2 1 排查cpu 占用最高的线程 使用js
  • JAVA-0基础学习笔记-day01

    0基础学Java笔记day01 01 01 计算机基础知识 计算机概述 了解 A 什么是计算机 计算机在生活中的应用举例 计算机 Computer 全称 电子计算机 俗称电脑 是一种能够按照程序运行 自动 高速处理海量数据的现代化智能电子设
  • Java经典面试题 带答案(五)

    Java经典面试题 带答案 五 Java 面试笔试题汇总 一 编程语言 Java 2 二 软件工程方面 9 三 智力测试 9 四 数据库 12 五 Java框架方面 14 六 XML方面 17 七 网络基础方面 17 八 算法方面 19 1
  • eclispe黑色配色方案,插件配置

    http blog csdn net zhwangkaixuan article details 9303359 使用android官方的ADT感觉界面白色的太怪了 看就了眼睛不舒服 上网找了一个eclispe的插件可以定制编辑器的配色方案
  • Docker学习笔记05-----镜像仓库之官方Docker Hub

    官方Docker Hub https hub docker com 1 创建Repository 2 构建容器镜像 2 1 创建Dockerfile FROM java 8 MAINTAINER itmrl LABEL name hello
  • Qt颜色选择器(HSV)

    目录 引言 HSV颜色空间 实现思路 代码实现 引言 基于Qt实现的HSV颜色选择器 效果如下 HSV颜色空间 HSV Hue Saturation Value 是根据颜色的直观特征创建的颜色模型 如下图所示 Hue为色调 通过角度表示不同
  • 3_Nginx重载、热部署、日志切割

    文章目录 常用命令 重载配置文件 热部署 流程 日志切割 常用命令 获取帮助 nginx h 使用指定的配置文件 nginx c conf file 在命令行中覆盖配置文件中的指令 nginx g 指定运行目录 nginx p 发送信号 n
  • 【Vue学习笔记3】使用Vite开启一个Vue3工程项目

    1 什么是Vite Vite是一个web开发构建工具 Vite 的竞品是 Webpack 而且按照现在的趋势看 使用率超过 Webpack 也是早晚的事 Vite 主要提升的是开发的体验 Webpack启动调试环境需要 3 分钟都很常见 V
  • linux环境下的Qt编程问题解决

    1 gcc编译器无法使用 原因可能是没有安装g 终端输入命令 sudo apt get install g 2 编译程序报错Could not start process make qmake all 解决办法 终端输入命令 sudo ap
  • 机器学习(第二章)—— 模型评估

    目录 一 评估指标的局限性 二 ROC曲线 三 余弦距离的应用 四 A B测试的陷阱 五 模型的评估方法 六 超参数优化 七 过拟合与欠拟合 准确率的局限性 精确率与召回率的权衡 平方根误差的 意外 什么是ROC曲线 为什么要进行在线A B
  • include过滤器

    include过滤器分为core gui io scene video几个文件夹以及 IEventReceiver h Irrlicht h Irrlicht h IrrlichtDevice h Irrlicht h IrrlichtDe
  • 【Selenium】webdriver.ChromeOptions()官方文档参数

    Google官方Chrome文档 在此记录一下 Chrome Flags for Tooling Many tools maintain a list of runtime flags for Chrome to configure the
  • CLIP与Chinese-CLIP:多模态预训练模型解读和图文检索体验

    欢迎关注公众号 AICV与前沿 一起学习最新技术吧 欢迎关注公众号 AICV与前沿 一起学习最新技术吧 欢迎关注公众号 AICV与前沿 一起学习最新技术吧 1 CLIP回顾 CLIP是2021年OpenAI提出的基于图文对比学习的多模态预训
  • MyBatis-Plus 使用拦截器实现数据权限控制

    前言背景 平时开发中遇到根据当前用户的角色 只能查看数据权限范围的数据需求 列表实现方案有两种 一是在开发初期就做好判断赛选 但如果这个需求是中途加的 或不希望每个接口都加一遍 就可以方案二加拦截器的方式 在mybatis执行sql前修改语
  • C++中类静态方法与实例方法的区别

    生成时机 静态方法在编译的时候就已经加载了并分配了内存 而实例方法只有在对象创建之后才会为实例方法分配内存 因此调用静态方法速度快 但是会占用内存 调用方式 静态方法归整个类所有 因此调用它不需要实例化 可以直接调用 类 静态方法 实例方法
  • stock趋势交易系统

    进场步骤 1 趋势 2 做单区间 回调区间就是做单区间 比如回调至最长红柱的1 3以内开始 变红或拉长不再开始 做单区间级别比趋势级别低一个级别 MACD绿柱缩短 3 决策点 比做单区间第一个级别 4 筛选 比如 看这个决策点是怎么得来的
  • js函数重载

    function createOverload var callMap new Map function overload args const key args map args gt typeof args join 得到形如 stri