JS重载实现方法分析

发布时间 - 2026-01-10 21:53:14    点击率:

本文实例分析了JS重载实现方法。分享给大家供大家参考,具体如下:

重载是面向对象语言里很重要的一个特性,JS中没有真正的重载,是模拟出来的(因为js是基于对象的编程语言,不是纯面向对象的,它没有真正的多态:如继承、重载、重写)

一、什么时候用重载?

举例:

function getDataTop10(){
  alert("返回前10条数据");
}

后来需求改了,需要获得20条数据,而getDataTop10又被很多函数调用了,整体替换可以但麻烦,这时可以用重载

进而引出什么是重载:函数名相同,但是可以区分出来,想用哪个就用哪个,而不是后面的同名函数覆盖前面的

二、怎么用?

arguments:Js里的一个内置对象,包含了调用者传递的实际参数(函数声明时定义的参数个数不影响)

function getData(){
  alert("返回所有数据");
}
function getDataTop(num){
  alert("返回前"+num+"数据");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"数据");
}
function getDste(){
  var num=arguments.length;
  if(!num){
  getData();
  }
  else if(num==1){
  getDataTop(arguments[0]);
  }
  else if(num==2){
  getDataLimit(arguments[0],arguments[1]);
  }
}
getDste(5)

当参数很多时要写一大串,遂可以改进

function getData(){
  alert("返回所有数据");
}
function getDataTop(num){
  alert("返回前"+num+"数据");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"数据");
}
function getDste(){
  var num=arguments.length;
  if(!num){
    getData();
  }
  else if(num==1){
    getDataTop.apply(this,arguments);
  }
  else if(num==2){
    getDataLimit.apply(this,arguments);
  }
}
getDste(5)

如果参数个数相同,类型不同,又该如何

function getData(){
  alert("返回所有数据");
}
function getDataTop(num){
  alert("返回前"+num+"数据");
}
function getDataLimit(num1,num2){
  alert("返回前"+num1+"-"+num2+"数据");
}
function getDataByType(type){
  alert("将返回"+type+"类型的数据");
}
function getDste(){
  var num=arguments.length;
  if(!num){
  getData();
  }
  else if(num==1){
  if(typeof arguments[0]=="number"){
      getDataTop.apply(this,arguments);
  }
  else{
    getDataByType.apply(this,arguments);
  }
  }
  else if(num==2){
  getDataLimit.apply(this,arguments);
  }
}
getDste("array")

三、好处

有利于合作开发

四、坏处

“实现”太勉强,如果参数过多,就要很多if语句,显得代码很乱

更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JS  # 重载  # JS模拟实现方法重载示例  # JavaScript中的方法重载实例  # javascript中通过arguments参数伪装方法重载  # js面向对象编程之如何实现方法重载  # js中方法重载如何实现?以及函数的参数问题  # 有关于JS构造函数的重载和工厂方法  # 添加JavaScript重载函数的辅助方法2  # 为JavaScript添加重载函数的辅助方法  # JavaScript 的方法重载效果  # 妙用缓存调用链实现JS方法的重载  # 面向对象  # 相关内容  # 什么时候  # 可以用  # 遍历  # 一大  # 数据结构  # 给大家  # 很重要  # 重写  # 就用  # 更多关于  # 时要  # 改了  # 想用  # 所述  # 程序设计  # 编程语言  # 又该  # 而不是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  googleplay官方入口在哪里_Google Play官方商店快速入口指南  油猴 教程,油猴搜脚本为什么会网页无法显示?  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  Laravel如何配置.env文件管理环境变量_Laravel环境变量使用与安全管理  如何在云主机快速搭建网站站点?  1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何快速生成ASP一键建站模板并优化安全性?  网站建设保证美观性,需要考虑的几点问题!  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  如何在万网ECS上快速搭建专属网站?  Laravel怎么实现模型属性转换Casting_Laravel自动将JSON字段转为数组【技巧】  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel如何实现模型的全局作用域?(Global Scope示例)  HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  如何在景安服务器上快速搭建个人网站?  Laravel怎么在Blade中安全地输出原始HTML内容  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何用景安虚拟主机手机版绑定域名建站?  JavaScript模板引擎Template.js使用详解  公司门户网站制作流程,华为官网怎么做?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  香港网站服务器数量如何影响SEO优化效果?  详解Android中Activity的四大启动模式实验简述  *服务器网站为何频现安全漏洞?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何彻底卸载建站之星软件?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  Java垃圾回收器的方法和原理总结  jimdo怎样用html5做选项卡_jimdo选项卡html5实现与切换效果【指南】  如何用PHP快速搭建CMS系统?  如何打造高效商业网站?建站目的决定转化率  如何快速搭建高效可靠的建站解决方案?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  详解Huffman编码算法之Java实现  如何在IIS中新建站点并解决端口绑定冲突?  利用 Google AI 进行 YouTube 视频 SEO 描述优化  详解CentOS6.5 安装 MySQL5.1.71的方法  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  网站优化排名时,需要考虑哪些问题呢?