La definición de función JS puede especificar el nombre del parámetro formal. Más o menos, pensaríamos que JS puede al menos admitir la sobrecarga de métodos con diferentes parámetros. Desafortunadamente, esto es solo una ilusión. Todos los parámetros de JS se pasan en argumentos. Este parámetro es similar a una matriz. Cuando se llama a una función, todos los parámetros reales se almacenan en esta estructura de datos. Los parámetros formales especificados cuando definimos la función realmente definimos un método de acceso rápido para los datos en esta estructura de datos. 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.
typeOfStringNumberObjectFunctionBooleAnObjectObject
ConstructorStringNumberObjectFunctionBooleanArrayUser 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>
¿Has entendido el método de sobrecargar las funciones de JavaScript? Si tiene alguna pregunta, deje un mensaje