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 相关文章推荐
jQuery右侧选项卡焦点图片轮播特效代码分享
Sep 05 Javascript
谈谈JavaScript类型系统之Math
Jan 06 Javascript
Bootstrap学习笔记之js组件(4)
Jun 12 Javascript
使用伪命名空间封装保护独自创建的对象方法
Aug 04 Javascript
javascript设计模式之module(模块)模式
Aug 19 Javascript
javascript简单进制转换实现方法
Nov 24 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
vue单页应用中如何使用jquery的方法示例
Jul 27 jQuery
JS如何设置元素样式的方法示例
Aug 28 Javascript
vue中使用sessionStorage记住密码功能
Jul 24 Javascript
vue升级之路之vue-router的使用教程
Aug 14 Javascript
jQuery操作事件完整实例分析
Jan 10 jQuery
概述一个页面从输入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投票程序源码
2007/03/11 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
php获取用户浏览器版本的方法
2015/01/03 PHP
Yii全局函数用法示例
2017/01/22 PHP
PHP中大括号'{}'用法实例总结
2017/02/08 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
PHP单例模式实例分析【防继承,防克隆操作】
2019/05/22 PHP
Ext 今日学习总结
2010/09/19 Javascript
JavaScript简单下拉菜单特效
2016/09/13 Javascript
JS/jQuery判断DOM节点是否存在的简单方法
2016/11/24 Javascript
ES6概念 Symbol toString()方法
2016/12/25 Javascript
解决vue 路由变化页面数据不刷新的问题
2018/03/13 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
Python中使用dom模块生成XML文件示例
2015/04/05 Python
Python编程中的文件操作攻略
2015/10/16 Python
总结用Pdb库调试Python的方式及常用的命令
2016/08/18 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
python圣诞树编写实例详解
2020/02/13 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python实现手势识别
2020/10/21 Python
css3实现的下拉菜单效果示例
2014/01/22 HTML / CSS
详解html5 canvas 微信海报分享(个人爬坑)
2018/01/12 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
Marlies Dekkers内衣荷兰官方网店:荷兰奢侈内衣品牌
2020/03/27 全球购物
客户经理岗位职责
2013/12/08 职场文书
八项规定整改方案
2014/02/21 职场文书
道德大讲堂实施方案
2014/05/14 职场文书
大学生求职信范文
2014/05/24 职场文书
查摆问题自我剖析材料
2014/08/18 职场文书
2014最新版群众路线四风整改措施
2014/09/24 职场文书
医德医风个人工作总结2014
2014/11/14 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
结婚当天新郎保证书
2015/05/08 职场文书