En muchos idiomas de alto nivel orientados a objetos, hay una sobrecarga de métodos. Y JavaScript no tiene el concepto de sobrecarga de métodos. Pero podemos usar el parámetro de argumentos para disfrazar la sobrecarga de la función
Antes de la simulación, veamos el código:
La copia del código es la siguiente:
// No hay función que declare parámetros formales en la superficie
function divert () {
alerta ("código de muestra");
}
diversión ("xiao ming", 100, verdadero); // escribí tres parámetros reales yo mismo
A través de los resultados, vemos que incluso si no definimos los parámetros formales al declarar una función, podemos escribir parámetros reales al llamar al método. (De hecho, los parámetros formales se leen al escribir a los programadores para llamar a las funciones)
¿Podemos obtener los parámetros reales en el código? La respuesta es sí: consulte el código:
La copia del código es la siguiente:
// No hay función que declare parámetros formales en la superficie
function divert () {
alerta (argumentos [0]); // Obtenga el valor del primer parámetro real.
alerta (argumentos [1]); // Obtenga el valor del segundo parámetro real.
alerta (argumentos [2]); // Obtenga el valor del tercer parámetro real.
alerta (argumentos.length); // Obtener el número de parámetros reales.
alerta ("código de muestra");
}
diversión ("xiao ming", 100, verdadero); // escribí tres parámetros reales yo mismo
A través del código, podemos saber que los argumentos (propiedades internas) son en sí mismas una matriz, y su función es almacenar los parámetros reales del método.
Con los puntos de conocimiento anteriores, habrá ideas para recargar el método de simulación. Podemos hacer un juicio basado en el número de parámetros reales, para ejecutar diferentes códigos lógicos. El código simple es el siguiente:
La copia del código es la siguiente:
function divert () {
if (arguments.length == 0) {
alerta ("Ejecutar código sin parámetros reales");
}
else if (arguments.length == 1)
{
alerta ("ejecute el código que pasa en un parámetro real");
}
else if (arguments.length == 2)
{
alerta ("Ejecutar código que pasa en dos parámetros reales");
}
}
divertido();
diversión ("Xiao Ming");
diversión ("Xiao Ming", "Xiao Hua");