Javascript基础 函数“重载” 详细介绍


Posted in Javascript onOctober 25, 2013

Javascript不像其他编程语言一样具有函数签名(什么是函数签名,简单的说就是说函数的接受参数类型和参数个数,也有人认为返回类型也应该包括。具体概念大家可以到网上查询)。

所以Javascript是不能像其他语言一样实现方法名相同,参数个数不同…的这类重载的,不信你可以试试:

         function show(){
             alert("1");
         }
         function show(num1){
             alert(num1);
         }         window.onload=function(){
             show();
             show(2);
         }

断点调试下,不带参数的show方法是不会被执行的,它会被show(num1)方法给覆盖掉。

那么Javascript中就不可以实现“重载”了么?答案是可以的,只是是另一种方式而已。对,就是利用arguments。

那么什么是arguments呢?在JS中它是一个特殊的属性,它可以像数组一样通过下标索引获取参数的值(但它不是数组),通过length获取参数个数:

         function showParamsCount(){
             alert("参数个数:"+arguments.length);//输出:参数个数:4
             alert("下标索引为3的参数:"+arguments[3]);//输出: 下标索引为3的参数:你好
         }         window.onload=function(){
             showParamsCount("Hello",4,5,"你好");
         }

还要知道的一点是JS中函数的命名参数不是必须的,所以要想知道调用时传递了多少个参数还是得通过arguments获取参数。

下面就实现一个简单的方法重载:

         function showMessage(){
             if(arguments.length==1){
                 alert(arguments[0]);
             }else if( arguments.length==2){
                 alert(arguments[0]+"说:"+arguments[1]);
             }else{
                 return false;
             }
         }         window.onload=function(){
             showMessage("Hi!");
             showMessage("张三","Hi 你妹");
         }

这样JS的重载算是实现了。

在看js高级程序设计这本书的时候发现arguments的值与对应命名参数的值永远同步,以前没注意过这个问题

         function showMessage(name,msg){
             arguments[1]="我可以改变msg的值";
             alert(name+"说:"+msg);//输出:张三说:我可以改变msg的值
         }         window.onload=function(){
             showMessage("张三","Hi 你妹");
         }

好吧关于js“重载”的基础知识就这么些

Javascript 相关文章推荐
关于IE浏览器以及Firefox下的javascript冒泡事件的响应层级
Oct 14 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
Sep 06 Javascript
简单的js表单验证函数
Oct 28 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
Dec 31 Javascript
JS删除字符串中重复字符方法
Mar 09 Javascript
JS实现单击输入框弹出选择框效果完整实例
Dec 14 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
Bootstrap table使用方法详细介绍
Dec 09 Javascript
详解Angular的数据显示优化处理
Dec 26 Javascript
Angular实现的敏感文字自动过滤与提示功能示例
Dec 29 Javascript
js实现坦克大战游戏
Feb 24 Javascript
Javascript 模拟mvc实现点餐程序案例详解
Dec 24 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
Oct 25 #Javascript
jquery及原生js获取select下拉框选中的值示例
Oct 25 #Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 #Javascript
各种常用的JS函数整理
Oct 25 #Javascript
jquery索引在使用中的一些困惑
Oct 24 #Javascript
各种页面定时跳转(倒计时跳转)代码总结
Oct 24 #Javascript
js 浏览本地文件夹系统示例代码
Oct 24 #Javascript
You might like
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
PHP exif扩展方法开启详解
2014/07/28 PHP
PHP实现的mysql操作类【MySQL与MySQLi方式】
2017/10/07 PHP
JavaScript 常用函数
2009/12/30 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
JavaScript中return false的用法
2015/03/12 Javascript
Nodejs下DNS缓存问题浅析
2016/11/16 NodeJs
JavaScript编写的网页小游戏,很给力
2017/08/18 Javascript
基于JS实现html中placeholder属性提示文字效果示例
2018/04/19 Javascript
JS插件amCharts实现绘制柱形图默认显示数值功能示例
2019/11/26 Javascript
VSCode搭建Vue项目的方法
2020/04/30 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
详解Python多线程
2016/11/14 Python
python实现验证码识别功能
2018/06/07 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Ubuntu下Python2与Python3的共存问题
2018/10/31 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
2018/12/19 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Django实现前台上传并显示图片功能
2020/05/29 Python
Python自动巡检H3C交换机实现过程解析
2020/08/14 Python
如何使用PyCharm引入需要使用的包的方法
2020/09/22 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
智乐游戏测试笔试题
2014/05/21 面试题
应届生简历中的自我评价
2014/01/13 职场文书
视光学毕业生自荐书范文
2014/02/13 职场文书
党课知识竞赛主持词
2014/04/01 职场文书
教务处教学工作总结
2015/08/10 职场文书
靠谱准确的求职信
2019/04/02 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript
详解JavaScript中Arguments对象用途
2021/08/30 Javascript