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 相关文章推荐
js实时获取系统当前时间实例代码
Jun 28 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
2014年50个程序员最适用的免费JQuery插件
Dec 15 Javascript
tuzhu_req.js 实现仿百度图片首页效果
Aug 11 Javascript
Bootstrap Navbar Component实现响应式导航
Oct 08 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
JS碰撞运动实现方法详解
Dec 15 Javascript
js遮罩效果制作弹出注册界面效果
Jan 25 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
Sep 14 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
Mar 09 jQuery
使用JavaScript实现贪吃蛇游戏
Sep 29 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中for循环语句的几种变型
2006/11/26 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
tp5(thinkPHP5)操作mongoDB数据库的方法
2018/01/20 PHP
页面中js执行顺序
2009/11/09 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
基于Jquery代码实现手风琴菜单
2015/11/19 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
Javascript 一些需要注意的细节(必看篇)
2017/07/08 Javascript
Javacript中自定义的map.js  的方法
2017/11/26 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
vue input实现点击按钮文字增删功能示例
2019/01/29 Javascript
vue router 用户登陆功能的实例代码
2019/04/24 Javascript
react实现复选框全选和反选组件效果
2020/08/25 Javascript
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
2020/12/14 NodeJs
操作Windows注册表的简单的Python程序制作教程
2015/04/07 Python
编写Python脚本来实现最简单的FTP下载的教程
2015/05/04 Python
简单谈谈Python中的几种常见的数据类型
2017/02/10 Python
python实现分页效果
2017/10/25 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
python 计算积分图和haar特征的实例代码
2019/11/20 Python
Python datetime 格式化 明天,昨天实例
2020/03/02 Python
在echarts中图例legend和坐标系grid实现左右布局实例
2020/05/16 Python
全球性的在线婚纱礼服工厂:27dress.com
2019/03/21 全球购物
Antler英国官网:购买安特丽行李箱、拉杆箱
2019/08/25 全球购物
医务人员竞聘职务自我评价分享
2013/11/08 职场文书
社区党务公开实施方案
2014/03/18 职场文书
公务员保密承诺书
2014/03/27 职场文书
环保建议书500字
2014/05/14 职场文书
个人作风建设剖析材料
2014/10/11 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
迎新晚会主持词开场白
2015/05/28 职场文书
嘉年华活动新闻稿
2015/07/17 职场文书
诚信教育主题班会
2015/08/13 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
python实现A*寻路算法
2021/06/13 Python