详解JS函数重载,javascript函数重载解决方案分享

2019-07-24 作者:网站首页   |   浏览(132)

JS的函数定义可以指定形式参数名称,多多少少我们会以为js至少可以支持参数个数不同的方法重载,然而遗憾的是这仅仅是一个假象,js所有的参数都是以arguments传递过去的,这个参数类似于数组,在函数调用的时候,所有的实参都是保存在了这个数据结构里面,我们定义函数的时候所指定的形式参数其实是为这个数据结构里面的数据定义一个快捷的访问方式。也就是说js所有的函数都是支持无限个参数的,加上数据类型是弱类型,那么JS的函数除了名称就真的没有方法区别了?

javascript函数重载解决方案分享

 本文主要介绍了javascript函数重载解决方案,利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传入参数的个数或类型以区分重载

yzc216亚洲城,JS的函数定义可以指定形式参数名称,多多少少我们会以为js至少可以支持参数个数不同的方法重载,然而遗憾的是这仅仅是一个假象,js所有的参数都是以arguments传递过去的,这个参数类似于数组,在函数调用的时候,所有的实参都是保存在了这个数据结构里面,我们定义函数的时候所指定的形式参数其实是为这个数据结构里面的数据定义一个快捷的访问方式。也就是说js所有的函数都是支持无限个参数的,加上数据类型是弱类型,那么JS的函数除了名称就真的没有方法区别了?

 

办法总是有的,我们可以利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传入参数的个数或类型以区分重载。

 

1.根据参数个数重载

 

js判断传入参数数量可以用arguments.length这个属性来判断;

 代码如下:

<script type="text/javascript">

function add() {

    if (arguments.length == 1) {

        alert(arguments[0] 10);

    }

    else if (arguments.length == 2) {

        alert(arguments[0] arguments[1]);

    }

}

//函数调用

add(10);

add(10, 20);

</script>

 

 

2.根据参数类型重载

 

判断变量类型的3种方法:

1.用 typeof 语句判断变量类型,typeof语句返回类型对应的字符串。

2.用 instanceof 语句判断变量类型,instanceof语句返回true/false。

3.用 constructor 属性判断变量类型,这个属性返回用来构造该变量的构造函数引用。

对照表:可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判断。

 

typeof string number object function boolean object object 

constructor String Number Object Function Boolean Array User Define 

 

 代码如下:

<script type="text/javascript">

function add() 

{

    if (arguments.length == 0) return 0;

    var sum=0;

    for(var i=0; i<arguments.length; i ){

        if(arguments[i].constructor == Number){

        //或者改为:if(arguments[i] instanceof Number)

        //或者改为:if(typeof(arguments[i])=="number")

        sum = arguments[i];

      }

    }

    return sum;

}

//函数调用

alert(add(10));

alert(add(10,20));

</script>

 

本文主要介绍了javascript函数重载解决方案,利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传...

  办法总是有的,我们可以利用JavaScript中的特殊对象arguments来模拟函数重载。用它来判断传入参数的个数或类型以区分重载。

1.根据参数个数重载

js判断传入参数数量可以用arguments.length这个属性来判断;

复制代码 代码如下:

<script type="text/javascript">
function add() {
    if (arguments.length == 1) {
        alert(arguments[0] 10);
    }
    else if (arguments.length == 2) {
        alert(arguments[0] arguments[1]);
    }
}
//函数调用
add(10);
add(10, 20);
</script>

2.根据参数类型重载

判断变量类型的3种方法:
1.用 typeof 语句判断变量类型,typeof语句返回类型对应的字符串。
2.用 instanceof 语句判断变量类型,instanceof语句返回true/false。
3.用 constructor 属性判断变量类型,这个属性返回用来构造该变量的构造函数引用。
对照表:可以看出用 typeof 不能准确的判断出具体的类型,所以我们用 constructor 来进行判断。

typeof string number object function boolean object object
constructor String Number Object Function Boolean Array User Define

复制代码 代码如下:

<script type="text/javascript">
function add()
{
    if (arguments.length == 0) return 0;
    var sum=0;
    for(var i=0; i<arguments.length; i ){
        if(arguments[i].constructor == Number){
        //或者改为:if(arguments[i] instanceof Number)
        //或者改为:if(typeof(arguments[i])=="number")
        sum = arguments[i];
      }
    }
    return sum;
}
//函数调用
alert(add(10));
alert(add(10,20));
</script>

小伙伴们是否理解了javascript函数重载的方法了呢,有疑问就留言吧

您可能感兴趣的文章:

  • 如何实现JS函数的重载
  • 让JavaScript 轻松支持函数重载 (Part 1 - 设计)
  • 让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
  • js 覆盖和重载 函数
  • 有关于JS构造函数的重载和工厂方法
  • js中方法重载如何实现?以及函数的参数问题
  • JavaScript中的函数重载深入理解
  • 通过实例理解javascript中没有函数重载的概念
  • JavaScript重载函数实例剖析

本文由yzc216亚洲城发布于网站首页,转载请注明出处:详解JS函数重载,javascript函数重载解决方案分享

关键词: yzc216亚洲城