Wie implementieren Sie Methodenüberladen in JS? Dies beinhaltet drei Probleme
1. Das Problem der gleichnamigen Aufruffunktionen
2. Spezielle Parameter in der Funktion
3.. So verwenden Sie Argumente zur Implementierung der Methodenüberladung
1. Das Problem der gleichnamigen Aufruffunktionen
Jeder weiß, dass, wenn es in JS mehrere Funktionen mit demselben Namen gibt, das letzte Mal beim Anruf verwendet wird. JS ist eigentlich nicht überladen. Das heißt, wenn mehrere Funktionen mit demselben Namen definiert sind, ist der einzelne Parameter unterschiedlich. Beim Anruf kümmert sich JS nicht um die Anzahl der Parameter, sondern nur die Reihenfolge vor und nachher
Zum Beispiel:
Funktion test1 (arg1) {alert ("Parameter 1:"+arg1); } function test1 (arg1, arg2, arg3) {alert ("Parameter 1:"+arg1+"Parameter 2:"+arg2+"Parameter 3:"+arg3); } // Testcode -Funktion test () {test1 ("1")}}Obwohl wir Test1 ("1") aufrufen und einen Parameter übergeben, ist der tatsächliche Aufruf Test1 (arg1, arg2, arg3), und wir rufen keine Methode mit nur einem Parameter auf, da wir einen Parameter übergeben.
2. Spezielle Parameter in der Funktion
Wenn wir den folgenden Code verwenden
Funktion test1 (arg1, arg2, arg3) {alert ("Parameter 1:"+arg1+"Parameter 2:"+arg2+"Parameter 3:"+arg3); } function Test1 (arg1) {alert ("Parameter 1:"+arg1); } // Code -Funktionstest () {test1 ("1", "2")}Wir wissen, dass der Anruf immer Test1 (Arg1) ist, was eine Funktion mit nur einem Parameter bedeutet, aber wie können andere Parameter übergeben werden?
Dies erfordert die Verwendung spezieller Parameter in den Funktionsargumenten, die alle an die Funktion übergebenen Parameter enthalten
Funktion test1 () {var text = ""; für (var i = 0; i <argumente.length; i ++) {text+= "Parameter"+i+":"+argumente [i]; } alert (Text); } // Testcode -Funktion test () {test1 ("1"); test1 ("1", "2"); Test1 ("1", "2", "3"); }Nach dem Testen wurde festgestellt, dass Argumente alle an die Funktion übergebenen Parameter enthalten, und die Argumente. Die Länge variiert je nach Anzahl der übergebenen Parameter, und die Argumente.
3.. Wie kann man Überladen von Funktionen in JS implementieren?
Nach den obigen Tests wurde festgestellt, dass die Überlastung von Funktionen nicht direkt in JS implementiert werden kann, aber gibt es eine Möglichkeit, ähnliche Überlastungseffekte zu erzielen?
Ja, verwenden Sie hauptsächlich Argumente
Zum Beispiel:
Funktion test1 () {var text = ""; if (Argumente.length == 1) {// Aufrufen einer Methode eines Parameters} else if (Argumente.length == 2) {// Aufrufen einer Methode von zwei Parametern} else {// Andere Methoden}}