`

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中的方法重载详解

    在TypeScript中,方法重载是一项关键特性,它允许开发者为同一个函数定义多个签名,...在编写TypeScript代码时,正确使用方法重载可以显著提高代码的可维护性和可读性,避免了JavaScript中动态类型可能导致的潜在错误。

    JavaScript中的方法重载实例

    总结来说,虽然JavaScript本身并不支持方法重载,但通过一些策略和技术手段,我们仍然可以在JavaScript中实现类似方法重载的功能。这包括了简单的参数检查以及更高级的addMethod函数封装技术。这些方法都是...

    js中方法重载如何实现?以及函数的参数问题.docx

    这里我们将详细讨论如何在JavaScript中实现方法重载以及相关的函数参数问题。 ### 方法重载的实现 #### 1. `arguments` 对象 JavaScript 中的每个函数都有一个内置对象 `arguments`,它是一个类数组对象,包含了...

    JavaScript 的方法重载效果

    这种方法虽然不能提供完全与静态类型语言中方法重载相同的语义,但在JavaScript中确实是一种有效的模拟手段,尤其是在函数需要对参数有特定要求时。通过结合`arguments`、`typeof`、`constructor`以及自定义的辅助...

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

    ### JavaScript重载函数实例剖析 #### 一、引言 在传统的面向对象编程语言如Java或C++中,重载(Overloading)是一种常见的特性,它允许开发者在同一作用域内定义多个同名但参数列表不同的方法。然而,在...

    Unity3D中JavaScript与C#对比

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

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

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

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

    方法覆盖是 Java 编程语言的一种机制,允许子类定义一个与父类中方法相同的方法,以便于覆盖父类的方法。方法覆盖可以使子类提供自己的实现,以便于更好地满足特定的需求。例如,一个子类可以覆盖父类中的一个方法,...

    layui数据表格重载实现往后台传参

    接着,我们需要在JavaScript中引入layui的table模块,并使用`table.render`方法来初始化表格。在初始化过程中,我们通过`url`属性指定了后端Servlet的地址,以便将前端操作的结果传到后端。`cols`属性定义了表格的列...

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

    总结来说,函数重载在JavaScript中的实现比较复杂,需要我们进行一些额外的设计和编码工作,但它为JavaScript编程提供了更加灵活和强大的方法定义能力。通过阅读本文,我们可以了解到如何通过自定义静态类和一些策略...

    JavaScript函数重载操作实例浅析

    在面试中,面试官询问了关于JavaScript函数重载的实现方法,这表明在实际开发中,即使语言本身不支持,我们也可以通过某种方式来模拟函数重载的功能。面试者首先想到了使用arguments对象的length属性来判断实际传入...

    Javascript中的arguments与重载介绍

    在JavaScript中,由于语言的灵活性,并没有像其他语言(如Java、C#)那样支持传统的函数重载,即通过参数类型或数量的不同来调用不同的函数。然而,JavaScript开发者通常可以通过其他技术手段来模拟这种行为,比如...

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

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

    Javascript实现运算符重载详解

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

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

    首先,文件提到的“添加JavaScript重载函数的辅助方法”是一个自定义的JavaScript函数库,用于帮助开发者创建具有不同参数签名的重载函数。在JavaScript语言中,函数重载并不是一个内置的特性,但通过一些技巧可以...

    关于JS重载

    JavaScript(JS)重载是编程中的一个概念,它通常指的是在同一个函数名下定义多个具有不同参数列表的函数,使得...在实际开发中,根据项目的具体需求和团队的编码规范,选择合适的方法来实现JavaScript的"重载"效果。

Global site tag (gtag.js) - Google Analytics