In JavaScript ist die Funktionsfunktion ein Objekt.
Es gibt keine Methodenüberlastung in JS
In JavaScript gibt es kein Überladen der Methode (Funktion).
Beispiel:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<script type = "text/javaScript">
Funktion add (Nummer)
{
Alarm (Zahl + 20);
}
Funktion add (Nummer, Nummer1)
{
Alarm (Zahl + 30);
}
add (10);
</script>
</head>
<body>
</body>
</html>
Das Kugelbox auf der Webseite zeigt 40.
Erläuterung Obwohl die zweite Methode zwei Parameter ist, wird sie immer noch aufgerufen.
Nach dem Austausch der Reihenfolge der beiden Methoden zeigt das Popup-Box 30 an. Es ist zu erkennen, dass unabhängig von der Anzahl der Parameter die folgende Methode mit demselben Namen aufgerufen wird.
Wie kann man dieses Phänomen erklären?
Dies liegt daran, dass die Funktionserklärung tatsächlich ein Objekt erstellt:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<script type = "text/javaScript">
Funktion add (Nummer)
{
Alarm (Zahl + 20);
}
/*
Die obige Funktion entspricht:
var add = Funktion (Nummer)
{
Alarm (Zahl + 20);
}
*/
Funktion add (Nummer, Nummer1)
{
Alarm (Zahl + 30);
}
/*
Die obige Funktion entspricht:
var add = Funktion (Nummer, Nummer1)
{
Alarm (Zahl + 30);
}
*/
add (10);
</script>
</head>
<body>
</body>
</html>
Auf diese Weise werden das nachfolgende Objekt tatsächlich Punkte hinzufügen, und die zugewiesenen Parameter, die bei der aufgerufenen Methode zugewiesen sind, werden den formalen Methodenparametern in der Reihenfolge zugeordnet, und die Parameter, die danach nicht zugewiesen werden, sind nicht definiert.
Beim Aufrufen von JavaScript -Funktionen wird die Anzahl der Parameter nicht streng überprüft. Es ist in Ordnung, die tatsächliche Anzahl von Parametern kleiner als die Anzahl der formalen Parameter zu haben. Die nicht zugewiesenen formalen Parameter sind undefinierte Werte.
Es ist auch möglich, dass die Anzahl der realen Parameter größer ist als die Anzahl der formalen Parameter. Auf diese Weise werden nur die vorherigen tatsächlichen Parameter verwendet, und die zusätzlichen tatsächlichen Parameter werden nicht verwendet.
Funktionsobjekt
In JavaScript befindet sich ein Funktionsobjekt, und alle benutzerdefinierten Funktionen sind von Funktionsobjekttyp.
Alle vom Funktionsobjekt empfangenen Parameter sind vom Typ Zeichenfolge, der letzte Parameter ist die zu ausgeführte Funktionskörper, und der vorherige Parameter sind die Parameter, die die Funktion wirklich empfangen muss.
Beispiel:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<script type = "text/javaScript">
var add = neue Funktion ("Nummer", "Nummer1", "alert (number + number1);");
var add = neue Funktion ("Nummer", "Alarm (Nummer + 20);");
add (10, 30);
</script>
</head>
<body>
</body>
</html>
Implizite Objektargumente
In JavaScript hat jede Funktion ein implizite Objektargumente, das die tatsächlich an die Funktion übergebenen Parameter darstellt.
Argumente haben nichts mit den formalen Parametern der Funktion und ihrer Anzahl zu tun.
Argumente haben eine nützliche Attributlänge, die die Länge des tatsächlichen Parameters anzeigt. Sie können dies verwenden, um die Überlastung der Funktion zu simulieren:
Übungsbeispiele:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<script type = "text/javaScript">
Funktion add (Nummer1, Nummer2)
{
alarm (Argumente.Length);
alarm (Argumente [0]);
Alarm (Argumente [1]);
Alarm (Argumente [2]);
}
// add (2, 3, 4);
Funktion add2 ()
{
if (1 == Argumente.Length)
{
alarm (Argumente [0]);
}
sonst wenn (2 == Argumente.Length)
{
ALERT (Argumente [0] + Argumente [1]);
}
sonst wenn (3 == Argumente.Length)
{
ALERT (Argumente [0] + Argumente [1] + Argumente [2]);
}
}
add2 (3);
add2 (3, 4);
Add2 (3, 4, 5);
</script>
</head>
<body>
</body>
</html>
Jedes Funktionsobjekt hat ein Längenattribut, das das Parameterformat angibt, das die Funktion empfängt.
Es unterscheidet sich von den Argumenten der Funktion. Argumente.Length repräsentiert die Anzahl der von der Funktion tatsächlich empfangenen Parameter.
Beispiel:
Die Codekopie lautet wie folgt:
<html>
<kopf>
<script type = "text/javaScript">
var add = function (num, num2, num3)
{
alert (num + num2 + num3);
}
alert (add.length); // Ausgabe 3
add (1, 2, 3);
var add2 = function ()
{
}
alarm (add2.Length); // Ausgabe 0
</script>
</head>
<body>
</body>
</html>