Die JS -Funktionsdefinition kann den formalen Parameternamen angeben. Dieser Parameter ähnelt einem Array Verfahren. 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 für 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.
Typof | Saite | Nummer | Objekt | Funktion | boolean | Objekt | Objekt |
Konstruktor | Saite | Nummer | Objekt | Funktion | Boolean | Array | Benutzer 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>