首页 > 其他分享 >js 方法重载实现

js 方法重载实现

时间:2024-07-26 15:52:13浏览次数:6  
标签:function const log funMap args js getUser 重载 方法

function createFunOverLoad() {
  const funMap = new Map()
  console.log(funMap)
  const funOverLoad = function (...args) {
    const key = args.map(param => typeof param).join('-')
    console.log(key)
    const fn = funMap.get(key)
    if (fn) {
      return fn.apply(this, args)
    }
    return new Error('not match function')
  }
  funOverLoad.addFunImpl = function (...args) {
    const fun = args.pop()
    if (!fun || typeof fun !== 'function') {
      return
    }
    const paramKeys = args.join('-')
    funMap.set(paramKeys, fun)
  }
  return funOverLoad
}

const getUser = createFunOverLoad()
getUser.addFunImpl(() => console.log('no params'))
getUser()

getUser.addFunImpl('string', 'number', (name, age) => console.log('no params111111' + name + age))
getUser('aaaa', 12)

 

标签:function,const,log,funMap,args,js,getUser,重载,方法
From: https://www.cnblogs.com/howhy/p/18325529

相关文章

  • 前端性能优化实践方向与方法
    0x01代码优化与压缩(1)HTML移除不必要的空白字符、注释和冗余标签,以减少文件大小使用命令npminstallhtml-minifier-g安装HTMLMinifier使用命令html-minifier-V确认安装成功在Node.js环境中配置index.js//引入HTMLMinifierconstminify=require("h......
  • 函数模板重载和实例化例题
    //CPPTest.cpp:此文件包含"main"函数。程序执行将在此处开始并结束。//#include<fstream>#include<iostream>#include<string>#include<cstring>#include<cmath>usingnamespacestd;template<classT>Tmaxn(T*arr,intn){ Tmax......
  • PixiJS源码分析系列:第三章 使用 canvas 作为渲染器
    使用canvasRenderer渲染上一章分析了一下Sprite在默认webgl渲染器上的渲染,这章让我们把目光聚集到canvasRenderer上使用canvas渲染器渲染图片的demo要使用canvas作为渲染器,我们需要引用pixi-legacy.js/bundles/pixi.js-legacy/dist/pixi-legacy.js像下面这样......
  • numpy 中用最少内存对上三角元素求和的最快方法
    我需要对对称矩阵进行类型求和i<j这相当于对矩阵的上三角元素求和,不包括对角线。给定A对称NxN数组,最简单的解决方案是np.triu(A,1).sum()但是我想知道是否存在需要更少内存的更快方法。看起来(A.sum()-np.diag(A).sum())/2......
  • 怎么把jpg转化成png?四个图片格式转换方法介绍
    当图像包含复杂的线条、文本或细节时,将JPG转换为PNG也是有益的。由于JPG是一种有损压缩格式,它在压缩过程中会牺牲一部分图像质量以换取更小的文件大小。这种压缩方式在处理自然图像(如风景、人像等)时效果尚可,但在处理包含大量细节的图像时,如复杂的图形、矢量图像或文本时,JPG的压......
  • word创建时间怎么改?学会这四个方法不用愁
    在日常的工作和学习中,我们经常会遇到需要修改Word文档创建时间的情况。无论是为了调整文档的归档日期,还是出于某种特定的需求,掌握修改Word文档创建时间的方法都显得尤为重要。今天,我们就来详细探讨四种有效的方式来修改Word文档的创建时间,让你在面对此类问题时不再犯愁。方法......
  • 如何批量去除文件夹只留文件?推荐使用这三个方法
    在文件数量庞大且分类复杂的情况下,去除不必要的文件夹层级可以显著提升文件的访问效率。例如,当你有一个名为“项目资料”的文件夹,里面又按照月份或项目阶段细分了多个子文件夹,每个子文件夹内再存放具体的文档和资料。如果某个项目的所有文件都已经完成,且未来不需要再按照原有结......
  • 手写字稿扫描方法
    手写字稿扫描方法本教程由做字体网(www.zuoziti.com)友情提供!本教程是制作手写字体系列教程,建议从序言部分开始阅读学习!如需交流,请加QQ924268440本节视频教程写完的手写字稿是这样的前面我们设计好了手写模板,并选好了书写笔,剩下的就是工工整整地书写了,这个过程大约要......
  • 如何在 AngularJS 中使用 Chart.js?
    Chart.js是一个灵活且功能强大的JavaScript库,可轻松创建各种类型的图表。在本指南中,我们将逐步介绍如何将Chart.js与AngularJS集成,并使用示例财务数据创建不同类型的图表。一.先决条件在我们开始之前,请确保您已准备好以下内容。已安装Node.js您的项目中包含Angu......
  • windows的nodejs版本控制工具:nvm nodejs以及vue的安装
    首先确保自己的电脑是首次安装nodejs相关的软件,安装nvm之前必须确保电脑无nodejs。1.nvm的安装在github上寻找合适的版本,我安装的是v1.12版本。Releases·coreybutler/nvm-windows·GitHubwindows下就下载如下图所示的nvm-setup.exe文件选择nvm的安装路径选择nodej......