全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JS重载实现方法分析

本文实例分析了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方法的重载  # 面向对象  # 相关内容  # 什么时候  # 可以用  # 遍历  # 一大  # 数据结构  # 给大家  # 很重要  # 重写  # 就用  # 更多关于  # 时要  # 改了  # 想用  # 所述  # 程序设计  # 编程语言  # 又该  # 而不是 


相关文章: 如何在万网开始建站?分步指南解析  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  建站之星如何通过成品分离优化网站效率?  完全自定义免费建站平台:主题模板在线生成一站式服务  建站之星伪静态规则如何正确配置?  Python文件管理规范_工程实践说明【指导】  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  存储型VPS适合搭建中小型网站吗?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  音乐网站服务器如何优化API响应速度?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  建站主机无法访问?如何排查域名与服务器问题  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  网站制作说明怎么写,简述网页设计的流程并说明原因?  在线制作视频的网站有哪些,电脑如何制作视频短片?  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何通过VPS建站实现广告与增值服务盈利?  建站与域名管理如何高效结合?  建站之星价格显示格式升级,你的预算足够吗?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何制作网站标识牌,动态网站如何制作(教程)?  简历在线制作网站免费,免费下载个人简历的网站是哪些?  建站之星导航如何优化提升用户体验?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  详解jQuery中基本的动画方法  如何用wdcp快速搭建高效网站?  建站之星展会模板:智能建站与自助搭建高效解决方案  建站之星代理如何优化在线客服效率?  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  济南网站制作的价格,历城一职专官方网站?  如何在VPS电脑上快速搭建网站?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  视频网站制作教程,怎么样制作优酷网的小视频?  如何做静态网页,sublimetext3.0制作静态网页?  高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  营销式网站制作方案,销售哪个网站招聘效果最好?  建站之星代理商如何保障技术支持与售后服务?  如何在IIS中新建站点并解决端口绑定冲突?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  中山网站推广排名,中山信息港登录入口?  南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?  移民网站制作流程,怎么看加拿大移民官网?  C++中引用和指针有什么区别?(代码说明)  如何用免费手机建站系统零基础打造专业网站?  如何挑选优质建站一级代理提升网站排名?  高防服务器租用指南:配置选择与快速部署攻略  如何用好域名打造高点击率的自主建站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。