Comment implémenter la surcharge de méthode dans JS? Cela implique trois problèmes
1. Le problème des fonctions d'appel du même nom
2. Paramètres spéciaux dans la fonction
3. Comment utiliser les arguments pour implémenter la surcharge de méthode
1. Le problème des fonctions d'appel du même nom
Tout le monde sait que s'il y a plusieurs fonctions avec le même nom dans JS, la dernière sera utilisée à chaque fois lors de l'appel. JS n'est en fait pas surchargé. C'est-à-dire que si plusieurs fonctions avec le même nom sont définies, le paramètre unique est différent. Lors de l'appel, JS ne se soucie pas du nombre de paramètres, mais seulement de l'ordre avant et après
Par exemple:
fonction test1 (arg1) {alert ("Paramètre 1:" + arg1); } fonction test1 (arg1, arg2, arg3) {alert ("Paramètre 1:" + Arg1 + "Paramètre 2:" + Arg2 + "Paramètre 3:" + Arg3); } // Test Code Fonction Test () {test1 ("1")}Bien que nous appelions Test1 ("1"), passant un paramètre, l'appel réel est Test1 (Arg1, Arg2, Arg3), et nous n'appelons pas de méthode avec un seul paramètre car nous passons un paramètre.
2. Paramètres spéciaux dans la fonction
Si nous utilisons le code suivant
Fonction Test1 (Arg1, Arg2, Arg3) {alert ("Paramètre 1:" + Arg1 + "Paramètre 2:" + Arg2 + "Paramètre 3:" + Arg3); } fonction test1 (arg1) {alert ("Paramètre 1:" + arg1); } // Test Code Fonction Test () {test1 ("1", "2")}Nous savons que l'appel est toujours Test1 (Arg1), ce qui signifie une fonction avec un seul paramètre, mais comment faire passer d'autres paramètres?
Cela nécessite l'utilisation de paramètres spéciaux dans les arguments de fonction, qui contiennent tous les paramètres transmis à la fonction
fonction test1 () {var text = ""; for (var i = 0; i <arguments.length; i ++) {text + = "Paramètres" + i + ":" + arguments [i]; } alert (texte); } // Test Code Fonction test () {test1 ("1"); test1 ("1", "2"); test1 ("1", "2", "3"); }Après test, il a été constaté que les arguments contiennent tous les paramètres transmis à la fonction, et les arguments.Length varie en fonction du nombre de paramètres réels passés, et les arguments.Length représente le nombre de paramètres de fonction réellement transmis aux paramètres de fonction.
3. Comment implémenter la surcharge des fonctions dans JS?
Après les tests ci-dessus, il a été constaté que la surcharge des fonctions ne peut pas être directement implémentée dans JS, mais existe-t-il un moyen d'obtenir des effets de surcharge similaires?
Oui, utilisez principalement des arguments
Par exemple:
fonction test1 () {var text = ""; if (arguments.length == 1) {// appelant une méthode d'un paramètre} else if (arguments.length == 2) {// appelant une méthode de deux paramètres} else {// Autres méthodes}}