Die JS -Funktionsdefinition kann den Namen des formalen Parameters angeben. Wir würden mehr oder weniger denken, dass JS zumindest die Methodenüberladung mit unterschiedlichen Parametern unterstützen kann. Leider ist dies nur eine Illusion. Alle Parameter von JS werden in Argumenten übergeben. Dieser Parameter ähnelt einem Array. Wenn eine Funktion aufgerufen wird, werden alle tatsächlichen Parameter in dieser Datenstruktur gespeichert. Die formalen Parameter, die angegeben sind, wenn wir die Funktion definieren, definieren tatsächlich eine Schnellzugriffsmethode für die Daten in dieser Datenstruktur. Mit anderen Worten, alle Funktionen von JS unterstützen unendliche Parameter, und der Datentyp ist ein schwacher Typ, daher gibt es wirklich keinen Methodenunterschied zwischen JS -Funktionen außer bei Namen?
Es gibt immer Möglichkeiten, wir können spezielle Objektargumente in JavaScript verwenden, um die Funktion Überladung zu simulieren. Verwenden Sie es, um die Anzahl oder den Typ der eingehenden Parameter zur Unterscheidung der Überlastung zu bestimmen.
1. Laden Sie nach der Anzahl der Parameter nach
JS, um die Anzahl der eingehenden Parameter zu bestimmen, kann anhand der Argumente beurteilt werden.
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
Funktion add () {
if (Argumente.length == 1) {
alarm (Argumente [0] + 10);
}
else if (argumente.length == 2) {
ALERT (Argumente [0] + Argumente [1]);
}
}
// Funktionsaufruf
add (10);
add (10, 20);
</script>
2. Laden Sie gemäß Parametertyp nach
Es gibt 3 Möglichkeiten, Variablentypen zu beurteilen:
1. Verwenden Sie die TypeOF -Anweisung, um den variablen Typ zu beurteilen, und die TypeOF -Anweisung gibt die Zeichenfolge zurück, die dem Typ entspricht.
2. Verwenden Sie die Instanzaussage, um den variablen Typ zu beurteilen, und die Instanzanweisung gibt true/false zurück.
3. Verwenden Sie das Konstruktorattribut, um den variablen Typ zu bestimmen, der die Konstruktorreferenz zurückgibt, die zur Konstruktion der Variablen verwendet wird.
Vergleichstabelle: Es ist zu sehen, dass die Verwendung von TypeOF den spezifischen Typ nicht genau bestimmen kann. Daher verwenden wir Konstruktoren, um Urteile zu fällen.
TypofStringNumberObjectFunctionBooleanObjectObject
constructorStringNumberObjectFunctionBooleanArrayUSer definieren
Die Codekopie lautet wie folgt:
<script type = "text/javaScript">
Funktion add ()
{
if (argumente.length == 0) return 0;
var sum = 0;
für (var i = 0; i <argumente.length; i ++) {
if (Argumente [i] .Constructor == Nummer) {
// oder ändern Sie: if (Argumente [i] Instanz der Nummer)
// oder ändern Sie: if (Typof (Argumente [i]) == "Nummer")
Summe += Argumente [i];
}
}
Rückgabesumme;
}
// Funktionsaufruf
alarm (10) addieren);
Alarm (add (10,20));
</script>
Haben Sie die Methode zur Überlastung von JavaScript -Funktionen verstanden? Wenn Sie Fragen haben, hinterlassen Sie bitte eine Nachricht