`

JavaScript中的方法重载

阅读更多

对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

分享到:
评论

相关推荐

    TypeScript中的方法重载详解

    方法重载(overload)在传统的静态类型语言中是很常见的。JavaScript 作为动态语言, 是没有重载这一说的。一是它的参数没有类型的区分,二是对参数个数也没有检查。虽然语言层面无法自动进行重载,但借助其动态的...

    JavaScript中的方法重载实例

    主要介绍了JavaScript中的方法重载实例,本文直接给出重载实例,需要的朋友可以参考下

    JavaScript 的方法重载效果

    JavaScript 语言的方法声明中,不能明确指定参数的类型和个数,所以不能实现方法的重载,但是我们可以用其他的方法来实现重载的效果。

    javascript中通过arguments参数伪装方法重载

    而javascript没有方法重载这个概念。但是我们可以通过arguments这个参数来伪装成函数的重载 在模拟之前我们先看一下代码: 代码如下: //表面上没有声明形式参数的函数 function fun() { alert&#40;“示例代码”&#...

    Unity3D中JavaScript与C#对比

    在 JavaScript 中,方法可以隐型并且不可重载,除非方法声明中添加虚拟关键字。而在 C# 中,方法需要使用 override 关键字来重载。 类继承方面,JavaScript 和 C# 也有所不同。在 JavaScript 中,类继承可以使用 `...

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

    所以Javascript是不能像其他语言一样实现方法名相同,参数个数不同…的这类重载的,不信你可以试试: 代码如下: function show(){ alert&#40;“1”&#41;; } function show(num1){ alert&#40;num1&#41;; } ...

    Javascript实现运算符重载详解

    本文给大家汇总介绍了Javascript实现运算符重载的方法,实现的思路很简单,有需要的小伙伴可以来看看

    JavaScript重载函数实例剖析_.docx

    JavaScript重载函数实例剖析_.docx

    Javascript中的arguments与重载介绍

    主要介绍了Javascript中的arguments与重载介绍,本文讲解了Javscript 重载、Javascript arguments不是一个数组等内容,需要的朋友可以参考下

    Java方法继承、方法重载、方法覆盖小结.doc

    Java方法继承、方法重载、方法覆盖小结.doc

    让 JavaScript 轻松支持函数重载 (Part 2 - 实现)

    在上一篇文章里,我们设计了一套能在JavaScript中描述函数重载的方法,这套方法依赖于一个叫做Overload的静态类,现在我们就来看看如何实现这个静态类。

    JavaScript重载函数实例剖析

    1.javascript 中是没有重载函数这个概念的! 首先javascript是没有重载函数这个概念的,很久以前,我用javascript做网页的时候,写一些简单的效果,根本不需要用到重载函数,当写游戏的时候,有大量的函数的时候,就...

    Javascript 面向对象 重载

    假如 我这样定义: 代码如下: function getDate(){…..} function getDate(date){…..} 那么后一个方法将覆盖前一个,虽然不报错。 但是我们确实是可以实现重载的,如果你用过jQuery,你就会深有体会,比如$(“#btn”...

    JavaScript函数重载操作实例浅析

    主要介绍了JavaScript函数重载操作,结合一次面试经历分析了JavaScript函数重载相关原理、用法及操作注意事项,需要的朋友可以参考下

    overload.js:类似javascript的基于重载的基于类型的功能

    类似javascript的基于重载的基于类型的功能 概述 重载使您可以根据提供的类型为方法指定不同的功能。 例如,您可能有一个公用方法,该公用方法根据是用字符串,两个字符串还是数字来调用而有所不同。 在强类型语言...

    让JavaScript 轻松支持函数重载 (Part 1 – 设计)

    JavaScript支持重载吗? JavaScript支持函数重载吗?可以说不支持,也可以说支持。说不支持,是因为JavaScript不能好像其它原生支持函数重载的语言一样,直接写多个同名函数,让编译器来判断某个调用对应的是哪一个...

    为JavaScript添加重载函数的辅助方法

    大家都习惯了重载带来的便利。JavaScript有没有重载呢?有人会回答没有,因为函数会被覆盖;有人说有,我们可以模拟重载这 一操作。

Global site tag (gtag.js) - Google Analytics