JS重载实现方法分析


Posted in Javascript onDecember 16, 2016

本文实例分析了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程序设计有所帮助。

Javascript 相关文章推荐
javascript 循环读取JSON数据的代码
Jul 17 Javascript
js不能跳转到上一页面的问题解决方法
Mar 01 Javascript
JavaScript异步编程:异步数据收集的具体方法
Aug 19 Javascript
Javascript核心读书有感之表达式和运算符
Feb 11 Javascript
两行代码轻松搞定JavaScript日期验证
Aug 03 Javascript
详解ECMAScript6入门--Class对象
Apr 27 Javascript
create-react-app修改为多页面支持的方法
May 17 Javascript
Vue子组件向父组件通信与父组件调用子组件中的方法
Jun 22 Javascript
jQuery实现鼠标移入移出事件切换功能示例
Sep 06 jQuery
记一次webapck4 配置文件无效的解决历程
Sep 19 Javascript
vue仿ios列表左划删除
Sep 26 Javascript
封装Vue Element的table表格组件的示例详解
Aug 19 Javascript
概述一个页面从输入URL到页面加载完的过程
Dec 16 #Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 #Javascript
js继承实现方法详解
Dec 16 #Javascript
详解jQuery简单的表格应用
Dec 16 #Javascript
JS中parseInt()和map()用法分析
Dec 16 #Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 #Javascript
JS数字千分位格式化实现方法总结
Dec 16 #Javascript
You might like
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
PHP控制网页过期时间的代码
2008/09/28 PHP
php读取msn上的用户信息类
2008/12/05 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
2017/04/27 PHP
通过Jscript中@cc_on 语句识别IE浏览器及版本的代码
2011/05/07 Javascript
js中更短的 Array 类型转换
2011/10/30 Javascript
基于JQuery 选择器使用说明介绍
2013/04/18 Javascript
多种方式实现JS调用后台方法进行数据交互
2013/08/20 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
JavaScript实现跨浏览器的添加及删除事件绑定函数实例
2015/08/04 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
Vue插件写、用详解(附demo)
2017/03/20 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
详解vue引入子组件方法
2019/02/12 Javascript
vuex实现的简单购物车功能示例
2019/02/13 Javascript
原生JS实现图片懒加载之页面性能优化
2019/04/26 Javascript
详解vue-cli@2.x项目迁移日志
2019/06/06 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
vue data有值,但是页面{{}} 取不到值的解决
2020/11/09 Javascript
基于Python pip用国内镜像下载的方法
2018/06/12 Python
实例分析python3实现并发访问水平切分表
2018/09/29 Python
基于pycharm导入模块显示不存在的解决方法
2018/10/13 Python
基于python实现简单网页服务器代码实例
2020/09/14 Python
国外平面设计第一市场:99designs
2016/10/25 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
iKRIX意大利网上商店:男女豪华服装和配件
2019/10/09 全球购物
PHP如何自定义函数
2016/09/16 面试题
长青弘远的面试题
2012/06/09 面试题
假日旅行社实习自我鉴定
2013/09/24 职场文书
中秋节国旗下演讲稿
2014/09/05 职场文书
商场营业员岗位职责
2015/04/14 职场文书
PHP 技巧 * SVG 保存为图片(分享图生成)
2021/04/02 PHP
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript