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 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
jquery中的$(document).ready()与window.onload的区别
Nov 18 Javascript
javascript 事件查询综合 推荐收藏
Mar 10 Javascript
jQuery学习笔记 操作jQuery对象 属性处理
Sep 19 Javascript
JavaScript prototype 使用介绍
Aug 29 Javascript
jquery easyui中treegrid用法的简单实例
Feb 18 Javascript
JavaScript中number转换成string介绍
Dec 31 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
在JavaScript中操作时间之getYear()方法的使用教程
Jun 11 Javascript
javascript中$(function() {});写与不写有哪些区别
Aug 10 Javascript
不想让浏览器运行javascript脚本的方法
Nov 20 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
Feb 09 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 smarty 二级分类代码和模版循环例子
2011/06/16 PHP
使用php判断服务器是否支持Gzip压缩功能
2013/09/24 PHP
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
php的ddos攻击解决方法
2015/01/08 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
php实现通用的从数据库表读取数据到数组的函数实例
2015/03/21 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP多个图片压缩成ZIP的方法
2020/08/18 PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
2021/03/04 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
经验几则 推荐
2006/09/05 Javascript
Javascript 学习笔记 错误处理
2009/07/30 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
修改或扩展jQuery原生方法的代码实例
2015/01/13 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
js 上传文件预览的简单实例
2016/08/16 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
js本地图片预览实现代码
2016/10/09 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
vuejs实现本地数据的筛选分页功能思路详解
2017/11/15 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
Python中类的初始化特殊方法
2017/12/01 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
Willer台湾:日本高速巴士/夜行巴士预约
2017/07/09 全球购物
几个Shell Script面试题
2012/08/31 面试题
主题婚礼策划方案
2014/02/10 职场文书
男女朋友协议书
2014/04/23 职场文书
超市理货员岗位职责
2014/07/04 职场文书
写给导师的自荐信
2015/03/06 职场文书
校车司机安全责任书
2015/05/11 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
Java Spring Boot 正确读取配置文件中的属性的值
2022/04/20 Java/Android