JQuery untersucht den Typ der übergebenen Parameter und findet heraus, was Sie gemeint haben. Das gibt Ihnen eine gewisse Flexibilität, was Sie einschließen. Dies funktioniert nur, wenn die erwarteten Parameter von einem anderen Typ sind. Wenn Sie zum Beispiel drei mögliche Parameter für eine Funktion haben: eine Zeichenkette, eine Zahl und eine Funktion, dann kann die empfangende Funktion den Typ jedes Parameters untersuchen und herausfinden, welcher der richtige ist, unabhängig von der Reihenfolge, in der sie übergeben werden oder welche Parameter enthalten sind.
In jQuery gibt es in der Regel nur einen Parameter, der eine Funktion ist, so kann jQuery ziemlich viel finden, egal wo es in der Parameterliste ist.
Wenn die Funktion hingegen zwei Zeichenketten oder zwei Funktionen als Parameter erhält, müssen diese in der richtigen Reihenfolge übergeben werden, damit die empfangende Funktion weiß, welche die richtige ist.
Dies kann in Javascript funktionieren, weil:
- Wenn ein Parameter nicht an eine Funktion übergeben wird, setzt Javascript das resultierende Argument für die Funktion einfach auf "undefiniert", so dass die aufrufende Funktion sehen kann, dass es beim Aufruf fehlte.
- Javascript erlaubt es, die Typen von Variablen zu untersuchen, so dass in diesem Fall die aufrufende Funktion die verschiedenen Typen dessen, was übergeben wurde, betrachten und ihr Verhalten ändern kann.
Wenn Sie sich die Funktion click() ansehen, sehen Sie, dass jQuery drei Möglichkeiten hat, sie zu verwenden:
.click()
.click( handler(eventObject) )
.click( [eventData,] handler(eventObject) )
Intern ist die Click-Funktion in jQuery wie folgt deklariert:
function (data, handler)
Dann, wenn diese Funktion aufgerufen wird jQuery schaut auf die Parameter Daten und Handler und bestimmt, dass, wenn beide Parameter undefiniert sind, dann muss der Aufrufer getan haben:
.click();
Wenn nur der Handler-Parameter undefiniert ist und der Daten-Parameter definiert und ein Funktionstyp ist, dann muss der Aufrufer die zweite Form von verwendet haben:
.click(handler)
In diesem Fall tut jQuery dies intern, um die Parameter in die richtigen Slots zu setzen, bevor sie verwendet werden:
handler = data;
data = null;
Wenn beide Parameter nicht undefiniert sind, muss der Aufrufer sie verwendet haben:
.click(data, handler)
und es kann beide Parameter wie angegeben verwenden.