对js有些了解的人都知道,在js中根本就不存在像C#中的那种方法重载,而有的只是方法的覆盖,当你在js中敲入两个或多个同名的方法的时候,不管方法 (函数)的参数个数怎么个不同,这个方法名只能属于最后定义的那个函数。也就是说后一个方法会把前面同名的方法给覆盖掉。
我们看一段下面的代码:
<span style="font-size:16px;"><script type="text/javascript"> function sayHi() { alert("你好,我是第一个sayHi方法!"); } function sayHi() { alert("你好,我是第二个sayHi方法!"); } function sayHi() { alert("你好,我是第三个sayHi方法!"); } sayHi(); </script></span>
在浏览器中查看的结果是:你好,我是第三个sayHi方法!
可见,最后一个方法已经把前面同名的两个方法覆盖掉了。这就是js中鼎鼎有名的方法覆盖问题。
那么在js中难道就不可以实现方法重载了吗?
我们再来看下面这段代码:
<span style="font-size:16px;"><script type="text/javascript"> function sayHi() { if (arguments.length==1) { alert(arguments[0] + "你好,我是第一个sayHi方法!"); } else if (arguments.length == 2) { alert(arguments[0] + "," + arguments[1] + "你好,我是第二个sayHi方法!"); } else if (arguments.length == 3) { alert(arguments[0] + "," + arguments[1]+","+arguments[2] + "你好,我是第三个sayHi方法!"); } } sayHi("Tom"); sayHi("Tom", "lucy"); sayHi("Tom","lucy","jame"); </script></span>
在浏览器中查看时会依次弹出三个消息框,调用sayHi方法中因参数个数不同而分的这三种不同情况。
这样看来,上面的方法很类似于C#中的方法重载,可以根据传入参数的不同类分别调用属于自己的分支。
注:不能完全类似于C#众的方法重载,因为没有办法根据传入参数的类型来调用属于自己的重载方法。
[本文转自]http://blog.csdn.net/yhc0322/article/details/6911480
相关推荐
方法重载(overload)在传统的静态类型语言中是很常见的。JavaScript 作为动态语言, 是没有重载这一说的。一是它的参数没有类型的区分,二是对参数个数也没有检查。虽然语言层面无法自动进行重载,但借助其动态的...
主要介绍了JavaScript中的方法重载实例,本文直接给出重载实例,需要的朋友可以参考下
JavaScript 语言的方法声明中,不能明确指定参数的类型和个数,所以不能实现方法的重载,但是我们可以用其他的方法来实现重载的效果。
而javascript没有方法重载这个概念。但是我们可以通过arguments这个参数来伪装成函数的重载 在模拟之前我们先看一下代码: 代码如下: //表面上没有声明形式参数的函数 function fun() { alert(“示例代码”&#...
在 JavaScript 中,方法可以隐型并且不可重载,除非方法声明中添加虚拟关键字。而在 C# 中,方法需要使用 override 关键字来重载。 类继承方面,JavaScript 和 C# 也有所不同。在 JavaScript 中,类继承可以使用 `...
所以Javascript是不能像其他语言一样实现方法名相同,参数个数不同…的这类重载的,不信你可以试试: 代码如下: function show(){ alert(“1”); } function show(num1){ alert(num1); } ...
本文给大家汇总介绍了Javascript实现运算符重载的方法,实现的思路很简单,有需要的小伙伴可以来看看
JavaScript重载函数实例剖析_.docx
主要介绍了Javascript中的arguments与重载介绍,本文讲解了Javscript 重载、Javascript arguments不是一个数组等内容,需要的朋友可以参考下
Java方法继承、方法重载、方法覆盖小结.doc
在上一篇文章里,我们设计了一套能在JavaScript中描述函数重载的方法,这套方法依赖于一个叫做Overload的静态类,现在我们就来看看如何实现这个静态类。
1.javascript 中是没有重载函数这个概念的! 首先javascript是没有重载函数这个概念的,很久以前,我用javascript做网页的时候,写一些简单的效果,根本不需要用到重载函数,当写游戏的时候,有大量的函数的时候,就...
假如 我这样定义: 代码如下: function getDate(){…..} function getDate(date){…..} 那么后一个方法将覆盖前一个,虽然不报错。 但是我们确实是可以实现重载的,如果你用过jQuery,你就会深有体会,比如$(“#btn”...
主要介绍了JavaScript函数重载操作,结合一次面试经历分析了JavaScript函数重载相关原理、用法及操作注意事项,需要的朋友可以参考下
类似javascript的基于重载的基于类型的功能 概述 重载使您可以根据提供的类型为方法指定不同的功能。 例如,您可能有一个公用方法,该公用方法根据是用字符串,两个字符串还是数字来调用而有所不同。 在强类型语言...
JavaScript支持重载吗? JavaScript支持函数重载吗?可以说不支持,也可以说支持。说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个...
大家都习惯了重载带来的便利。JavaScript有没有重载呢?有人会回答没有,因为函数会被覆盖;有人说有,我们可以模拟重载这 一操作。