全网整合营销服务商

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

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


相关文章: 制作公司内部网站有哪些,内网如何建网站?  Swift中switch语句区间和元组模式匹配  如何打造高效商业网站?建站目的决定转化率  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  建站之星云端配置指南:模板选择与SEO优化一键生成  太原网站制作公司有哪些,网约车营运证查询官网?  如何在阿里云虚拟主机上快速搭建个人网站?  如何用景安虚拟主机手机版绑定域名建站?  电商平台网站制作流程,电商网站如何制作?  建站之星手机一键生成:多端自适应+小程序开发快速建站指南  北京的网站制作公司有哪些,哪个视频网站最好?  如何通过虚拟机搭建网站?详细步骤解析  ,网页ppt怎么弄成自己的ppt?  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何快速搭建高效服务器建站系统?  c# 在ASP.NET Core中管理和取消后台任务  如何快速搭建响应式可视化网站?  公司门户网站制作流程,华为官网怎么做?  如何通过远程VPS快速搭建个人网站?  建站之星如何配置系统实现高效建站?  内部网站制作流程,如何建立公司内部网站?  怎么制作网站设计模板图片,有电商商品详情页面的免费模板素材网站推荐吗?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何在IIS7上新建站点并设置安全权限?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何续费美橙建站之星域名及服务?  建站之星如何优化SEO以实现高效排名?  装修招标网站设计制作流程,装修招标流程?  如何做静态网页,sublimetext3.0制作静态网页?  西安大型网站制作公司,西安招聘网站最好的是哪个?  电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?  建站之星安装失败:服务器环境不兼容?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何在云虚拟主机上快速搭建个人网站?  如何在阿里云域名上完成建站全流程?  如何在万网ECS上快速搭建专属网站?  微网站制作教程,我微信里的网站怎么才能复制到浏览器里?  建站VPS配置与SEO优化指南:关键词排名提升策略  北京制作网站的公司,北京铁路集团官方网站?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  C++中引用和指针有什么区别?(代码说明)  创业网站制作流程,创业网站可靠吗?  制作销售网站教学视频,销售网站有哪些?  建站之星下载版如何获取与安装?  如何选择靠谱的建站公司加盟品牌?  建站之星备案是否影响网站上线时间?  如何基于云服务器快速搭建网站及云盘系统?  如何选择最佳自助建站系统?快速指南解析优劣  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何用wdcp快速搭建高效网站? 

您的项目需求

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