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基础 函数“重载”的更多相关文章

  1. JavaScript 没有函数重载&Arguments对象

    对于学过Java的人来说.函数重载并非一个陌生的概念,可是javaScript中有函数重载么...接下来我们就进行測试 <script type="text/javascript&qu ...

  2. JavaScript模拟函数重载

    JavaScript是没有函数重载的,但是我们可以通过其他方法来模拟函数重载,如下所示: <!DOCTYPE html> <html> <head> <met ...

  3. JavaScript的函数重载

    java语言中函数的重载和重写可谓是很重要的概念,所以在写js的时候时不时的会想到这种用法,重写先不说,这里只说重载.. <script language="JavaScript&qu ...

  4. JavaScript基础函数---李老师的

    <!DOCTYPE html><html><head>    <title>demo2html</title>    <meta ch ...

  5. C++基础--函数重载

    函数重载定义: 在相同的作用域中具有相同的函数名而函数形参列表(参数类型.参数个数.参数顺序)不同的两个函数,称之为函数重载.注意:函数返回值类型并不是重载的条件. 函数重载优点: 可以使用相同的函数 ...

  6. JavaScript基础函数的声明(014)

    1.函数的重要地位 函数(functions)在JavaScript里有着重要的地位,其原因有二: 它们是一种特殊的对象 它们提供作用域 说函数在JavaScript里是特殊的对象,因为: 程序的执行 ...

  7. JavaScript -基础- 函数与对象

    一.JavaScript三对象 1.分类方式一 1)ECMAScript JavaScript的ECMA规范 JS本身的对象 2)Dom 操作HTML相关 3)BOM游览器对象 游览器窗口对象,全局的 ...

  8. JavaScript基础函数和词法分析以及常用的内置对象和使用方法(4)

    day52 参考:https://www.cnblogs.com/liwenzhou/p/8004649.html 函数 函数定义 JavaScript中的函数和Python中的非常类似,只是定义方式 ...

  9. JavaScript基础函数的属性:记忆模式(019)

    函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: ...

随机推荐

  1. lvs+keepalived+nginx+tomcat

    # 拓扑如下所示 # 节点分布情况 LVS-dr-master eth0: 192.168.146.141 LVS-dr-slave eth0: 192.168.146.142 nginx1: eth ...

  2. 关于textView的字数限制

    在一个项目中遇到texteView的字数限制,在iOS7.0上,会出现崩溃.我在这里栽了一个大跟头,废话不多说,下面直接贴代码吧. - (void)textViewDidChange:(UITextV ...

  3. ZOJ 1633

    迭代 每个数对应前面的一个数 #include<stdio.h> #include<iostream> using namespace std; #define max 88 ...

  4. ST表入门学习poj3264 hdu5443 hdu5289 codeforces round #361 div2D

    ST算法介绍:[转自http://blog.csdn.net/insistgogo/article/details/9929103] 作用:ST算法是用来求解给定区间RMQ的最值,本文以最小值为例 方 ...

  5. zepto自定义事件

    <!--测试自定义事件 trigger--> <script> $(function () { var meEvent = $.Event("custom" ...

  6. php中计算中文字符串长度、截取中文字符串

    在做PHP开发的时候,由于我国的语言环境问题,所以我们常常需要对中文进行处理.在PHP中,我们都知道有专门的mb_substr和mb_strlen函数,可以对中文进行截取和计算长度,但是,由于这些函数 ...

  7. notepad++搜索结果不显示line XX的方法

    在使用notepad++如果多次搜索,得到的结果中会出现多次line xx: line xx:,造成文件大量垃圾信息的存在,不利于找寻所需的内容,如下图.                对于这种情况, ...

  8. Python学习笔记总结(二)函数和模块

    一.函数 函数的作用:可以计算出一个返回值,最大化代码重用,最小化代码冗余,流程的分解. 1.函数相关的语句和表达式 语句        例子 Calls        myfunc(‘diege', ...

  9. [置顶] css3 befor after 简单使用 制作时尚焦点图相框

    :befor.:after是CSS的伪元素,什么是伪元素呢?伪元素用于向某些选择器设置特殊效果. 我们用CSS手册可以查询到其基本的用法: E:before/E::before 设置在对象前(依据对象 ...

  10. 数据库范式(1NF 2NF 3NF BCNF)详解

    数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的.结构明晰的,同时,不会发生插入(insert).删除(delete)和更新(update)操作异常.反之则是乱七八糟,不仅给 ...