La definición de la función JS puede especificar el nombre de parámetro formal. Este parámetro es similar a una matriz. método. En otras palabras, todas las funciones de JS admiten parámetros infinitos, y el tipo de datos es un tipo débil, por lo que realmente no hay diferencia de método entre las funciones JS, excepto los nombres.
Siempre hay formas, podemos usar argumentos especiales de objetos en JavaScript para simular la sobrecarga de funciones. Úselo para determinar el número o tipo de parámetros entrantes para distinguir la sobrecarga.
1. Recargar de acuerdo con el número de parámetros
JS para determinar el número de parámetros entrantes puede juzgarse por el atributo argumentos.
La copia del código es la siguiente:
<script type = "text/javaScript">
función add () {
if (arguments.length == 1) {
alerta (argumentos [0] + 10);
}
else if (arguments.length == 2) {
alerta (argumentos [0] + argumentos [1]);
}
}
// Llamada de función
agregar (10);
agregar (10, 20);
</script>
2. Recargar de acuerdo con el tipo de parámetro
Hay 3 formas de juzgar los tipos de variables:
1. Use la instrucción typeof para juzgar el tipo de variable, y la instrucción typeOf devuelve la cadena correspondiente al tipo.
2. Utilice la instrucción instancea para juzgar el tipo de variable, y la instrucción instancia de devuelve verdadero/falso.
3. Use el atributo de constructor para determinar el tipo de variable, que devuelve la referencia del constructor utilizada para construir la variable.
Tabla de comparación: se puede ver que el uso de typeOf no puede determinar con precisión el tipo específico, por lo que usamos constructor para hacer juicios.
tipo de tono | cadena | número | objeto | función | booleano | objeto | objeto |
constructor | Cadena | Número | Objeto | Función | Booleano | Formación | Usuario definir |
La copia del código es la siguiente:
<script type = "text/javaScript">
función add ()
{
if (argumentos.length == 0) return 0;
var sum = 0;
para (var i = 0; i <arguments.length; i ++) {
if (argumentos [i] .constructor == número) {
// o cambiar a: if (argumentos [i] instancia de número)
// o cambiar a: if (typeof (argumentos [i]) == "número")
sum += argumentos [i];
}
}
suma de retorno;
}
// Llamada de función
alerta (agregar (10));
alerta (agregar (10,20));
</script>