¿Cómo implementar la sobrecarga de métodos en JS? Esto implica tres problemas
1. El problema de llamar a las funciones del mismo nombre
2. Parámetros especiales en la función
3. Cómo usar argumentos para implementar la sobrecarga de métodos
1. El problema de llamar a las funciones del mismo nombre
Todos saben que si hay múltiples funciones con el mismo nombre en JS, el último se usará cada vez que llame. JS en realidad no está sobrecargado. Es decir, si se definen múltiples funciones con el mismo nombre, el parámetro único es diferente. Al llamar a JS, a JS no le importa el número de parámetros, sino solo el pedido antes y después
Por ejemplo:
función test1 (arg1) {alerta ("Parámetro 1:"+arg1); } función de función1 (arg1, arg2, arg3) {alerta ("parámetro 1:"+arg1+"parámetro 2:"+arg2+"parámetro 3:"+arg3); } // Función de código de prueba Test () {test1 ("1")}Aunque llamamos a Test1 ("1"), pasando un parámetro, la llamada real es Test1 (Arg1, Arg2, Arg3), y no llamamos un método con solo un parámetro porque pasamos un parámetro.
2. Parámetros especiales en la función
Si usamos el siguiente código
función test1 (arg1, arg2, arg3) {alert ("parámetro 1:"+arg1+"parámetro 2:"+arg2+"parámetro 3:"+arg3); } function test1 (arg1) {alert ("parámetro 1:"+arg1); } // Función de código de prueba Test () {test1 ("1", "2")}Sabemos que la llamada siempre es Test1 (Arg1), lo que significa una función con solo un parámetro, pero ¿cómo pasar otros parámetros?
Esto requiere el uso de parámetros especiales en los argumentos de función, que contienen todos los parámetros pasados a la función
función test1 () {var text = ""; for (var i = 0; i <arguments.length; i ++) {text+= "parámetros"+i+":"+argumentos [i]; } alerta (texto); } // Función de código de prueba test () {test1 ("1"); test1 ("1", "2"); test1 ("1", "2", "3"); }Después de la prueba, se descubrió que los argumentos contienen todos los parámetros pasados a la función, y los argumentos. La longitud varía según el número de parámetros reales pasados, y los argumentos. La longitud representa el número de parámetros de la función realmente pasados.
3. ¿Cómo implementar la sobrecarga de funciones en JS?
Después de las pruebas anteriores, se descubrió que la sobrecarga de funciones no se puede implementar directamente en JS, pero ¿hay alguna forma de lograr efectos de sobrecarga similares?
Sí, utilice principalmente argumentos
Por ejemplo:
función test1 () {var text = ""; if (arguments.length == 1) {// llamando a un método de un parámetro} else if (arguments.length == 2) {// llamando a un método de dos parámetros} else {// otros métodos}}