Details of JS function overloading

  • 2020-03-30 04:30:14
  • OfStack

There is always a way to simulate function overloading using special object arguments in JavaScript. Use it to determine the number or type of arguments passed in to distinguish overloads.

1. Overload according to the number of parameters

Js determines the number of arguments passed by using the argument. Length property.


<script type="text/javascript">
function add() {
    if (arguments.length == 1) {
        alert(arguments[0] + 10);
    }
    else if (arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
    }
}
//The function is called
add(10);
add(10, 20);
</script>

2. Overloading by parameter type

3 ways to determine the type of a variable:
1. Judge the variable type with typeof statement, and the typeof statement returns the string corresponding to the type.
2. Determine the variable type with instanceof statement, which returns true/false.
Determine the type of a variable with the constructor attribute, which returns the constructor reference used to construct the variable.
It can be seen that typeof does not accurately identify a specific type, so we use constructors to do this.

Typeof  String  Number  Object  Function  Boolean  Object  The 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){
        //Or: if(arguments[I] instanceof Number)
        //If (typeof(arguments[I])=="number")
        sum += arguments[i];
      }
    }
    return sum;
}
//The function is called
alert(add(10));
alert(add(10,20));
</script>


Related articles: