当前位置: 首页 > news >正文

js 函数重载

概念:允许某个函数有各种不同输入,根据不同的输入,调用不同的函数,然后返回不同的结果。

简单定义:根据不同参数长度来实现让同一个函数,进行不同处理

function addMethod (obj, name, fun) {
    let old = obj[name]
    obj[name] = function () {
        if (fun.length === arguments.length) {
            return fun.apply(this, arguments)
        } else if (typeof old === 'function') {
            return old.apply(this, arguments)
        }
    }
}

使用:

var a = {}
addMethod(a, 'test', function(x){console.log(x)})
addMethod(a, 'test', function(x, y){console.log(x+y)})
addMethod(a, 'test', function(x, y, z){console.log(x+y+z)})
// test 是function名字,当参数长度不一样时候,执行的test不一样

测试:

a.test('s')
> s
a.test(1)
> 1
a.test(1,2)
> 3
a.test('1','2')
> 12
a.test('1','2','3')
> 123
a.test(1,2,3)
> 6

 

相关文章:

  • 从两个角度理解为什么 JS 中没有函数重载
  • Promise.all和Promise.race区别,和使用场景
  • js 判断当前时间是否处于某个时间段内
  • 请描述一下 cookies,sessionStorage 和 localStorage 的区别
  • node -v没有作用
  • edited
  • 笔记本尺寸
  • 关于冒烟测试和回归测试的概念
  • 关于webstorm-----eslint一键自动修复所有错误
  • 微信授权,修改本地 host
  • 基于element封装一个公共的限制图片宽高的方法
  • elementUI编辑进入页面输入框输入内容没有作用问题
  • element上传图片校验尺寸
  • Vue Element采坑日记之图片上传后不及时更新视图
  • ellement非必填校验数字
  • “大数据应用场景”之隔壁老王(连载四)
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java到底能干嘛?
  • Java教程_软件开发基础
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Kibana配置logstash,报表一体化
  • session共享问题解决方案
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 成为一名优秀的Developer的书单
  • 关于Flux,Vuex,Redux的思考
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 使用 @font-face
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 再谈express与koa的对比
  • 找一份好的前端工作,起点很重要
  • 阿里云移动端播放器高级功能介绍
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ​iOS实时查看App运行日志
  • #pragma 指令
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • $().each和$.each的区别
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (4)Elastix图像配准:3D图像
  • (6)设计一个TimeMap
  • (分享)自己整理的一些简单awk实用语句
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (四)JPA - JQPL 实现增删改查
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net - 类的介绍
  • .NET 使用配置文件
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /usr/bin/env: node: No such file or directory
  • [ Algorithm ] N次方算法 N Square 动态规划解决