JS重载实现方法分析
作者:鬼畜十三 时间:2023-10-07 08:09:04
本文实例分析了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程序设计有所帮助。
标签:JS,重载
0
投稿
猜你喜欢
DIV与Table布局在大型网站的可用性比较
2007-10-08 12:46:00
利用Python计算质数与完全数的方法实例
2022-12-30 23:35:26
pytorch 自定义卷积核进行卷积操作方式
2021-07-24 22:54:39
如何利用Python动态模拟太阳系运转
2022-01-14 15:01:43
Python正则抓取新闻标题和链接的方法示例
2022-05-16 06:01:31
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2023-11-21 07:25:32
浅谈SQL Server 对于内存的管理[图文]
2024-01-14 07:41:44
Django框架实现在线考试系统的示例代码
2021-05-24 23:07:00
详解vue中的computed的this指向问题
2024-04-27 15:46:56
JS获取当前时间的实例代码(昨天、今天、明天)
2024-04-23 09:28:36
SQL Server 2012使用Offset/Fetch Next实现分页数据查询
2024-01-25 03:54:55
解决python Markdown模块乱码的问题
2021-09-15 07:31:36
ASP使用fso遍历文件及文件夹列出文件名
2008-10-27 19:32:00
python实现画循环圆
2023-01-17 02:18:28
python计算圆周长、面积、球体体积并画出圆
2022-08-15 06:19:59
浅析SQL Server 2008企业级新特性
2008-11-24 17:01:00
JavaScript对象的浅拷贝与深拷贝实例分析
2024-04-16 09:46:34
Mysql命令大全(完整版)
2024-01-13 15:03:35
mysql 事务处理及表锁定深入简析
2024-01-23 06:34:52
奇淫技巧和西天取经
2009-08-24 12:34:00