本文实例分析了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中html" target="_blank">json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
本文向大家介绍JS模拟实现方法重载示例,包括了JS模拟实现方法重载示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS模拟实现方法重载。分享给大家供大家参考,具体如下: 在JS方法中,不能像C#方法能实现重载,但是我们可以通过js中的arguments来实现js方法的重载。 下面给出html实例: 更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面
本文向大家介绍JS简单实现数组去重的方法分析,包括了JS简单实现数组去重的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS简单实现数组去重的方法。分享给大家供大家参考,具体如下: 运行结果: 关于indexOf()方法: indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。 stringObject.indexOf(searchvalue,frominde
本文向大家介绍js重写方法的简单实现,包括了js重写方法的简单实现的使用技巧和注意事项,需要的朋友参考一下 如下所示: 上面的内容来自《javascript语言精粹》,真的很不错。 以上这篇js重写方法的简单实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍js面向对象编程之如何实现方法重载,包括了js面向对象编程之如何实现方法重载的使用技巧和注意事项,需要的朋友参考一下 js中如何实现方法重载?这涉及到三个问题 1.同名函数的调用问题 2.函数中特殊的参数arguments 3.如何利用arguments实现方法重载 1、同名函数的调用问题 都知道在js中如果存在多个名称相同的函数,则调用实际每次都只使用最后一个,js其实是没有重载的
本文向大家介绍Lua实现__add方法重载示例,包括了Lua实现__add方法重载示例的使用技巧和注意事项,需要的朋友参考一下 实现加法(__add)重载代码示例:
本文向大家介绍jquery及js实现动态加载js文件的方法,包括了jquery及js实现动态加载js文件的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了jquery及js实现动态加载js文件的方法。分享给大家供大家参考,具体如下: 问题: 如果用jquery append直接加载script标签的话,会报错的。除了document.write外,还有没有其他的比较好的动态加载js文件