Heutzutage sind native Apps und Web-Apps der Mainstream, was bedeutet, dass verschiedene Browser-basierte Web-App-Frameworks immer beliebter werden und diejenigen, die JS tun, immer vielversprechender werden. Ich beschloss auch, schrittweise von der Back-End-Entwicklung zur Entwicklung von Front-End-Entwicklung und der mobilen Entwicklung zu wechseln. Lassen Sie uns nicht über Unsinn sprechen, lassen Sie uns zum Thema "JS Callback -Funktion" kommen.
Apropos Rückruffunktionen, obwohl viele Menschen die Bedeutung kennen, haben sie immer noch nur wenige Verständnisse. Wie man es benutzt, ist es immer noch ein bisschen verwirrt. Einige verwandte Dinge im Internet haben nicht im Detail erklärt, was passiert ist, und sie sind mehr einseitig. Als nächstes werde ich nur über mein persönliches Verständnis sprechen und mich nicht kritisieren. Schauen wir uns eine grobe Definition an. "Funktion A hat einen Parameter, und dieser Parameter ist eine Funktion b. Wenn die Funktion A ausgeführt wird, wird die Funktion B ausgeführt. Dann wird dieser Vorgang als Rückruf bezeichnet." Dieser Satz bedeutet, dass die Funktion B in die Funktion A in Form eines Parameters übergeben und in der Reihenfolge der Ausführung eines ersten und dann die Parameter b ausgeführt wird, b ist die sogenannte Rückruffunktion. Schauen wir uns zunächst das folgende Beispiel an.
Die Codekopie lautet wie folgt:
Funktion a (Rückruf) {
alarm ('a');
callback.call (this); // oder callback (), callback.apply (this), abhängig von der persönlichen Präferenz
}
Funktion b () {
alarm ('b');
}
//Anruf
a (b);
Das Ergebnis ist, dass 'A' zuerst auftaucht und 'B' auftaucht. Auf diese Weise könnte jemand fragen: "Was bringt es, einen solchen Code zu schreiben? Es scheint nicht nützlich zu sein!"
Ja, ich denke tatsächlich, dass es bedeutungslos ist, so zu schreiben: "Wenn Sie eine Funktion aufrufen, rufen Sie sie einfach in der Funktion auf." Ich schreibe nur ein kleines Beispiel für Sie, um Ihnen ein vorläufiges Verständnis zu vermitteln. Diese Art von parameterloser Eins wird selten im Prozess des tatsächlichen Schreibens von Code verwendet, da wir in den meisten Szenarien Parameter übergeben müssen. Hier ist ein Parameter:
Die Codekopie lautet wie folgt:
Funktion c (Rückruf) {
alarm ('c');
callback.call (this, 'D');
}
//Anruf
c (Funktion (e) {
Alarm (e);
});
Sieht dieser Anruf vertraut aus? Hier wird der E -Parameter 'D' zugeordnet. Wir weisen einfach den Wert Charakter -Spritzer zu, aber tatsächlich können wir Objekten auch den Wert zuweisen. Gibt es einen E -Parameter in JQuery? Reden wir unten darüber
Wie wird der E -Parameter in JQuery durch einen Rückruf zugewiesen?
Ich denke, jeder ist mit dem JQuery -Framework vertraut. Es wird lange Zeit veröffentlicht und wird während der Entwicklung verwendet. Es ist relativ einfach. Es ist sehr bequem, die API online zu durchsuchen, und es ist einfach, loszulegen. Unter dem JQuery -Framework müssen wir manchmal einige Parameter im Ereignis abrufen, z. B. die Koordinaten des aktuellen Klicks und das Elementobjekt des Klicks. Diese Anforderung ist in JQuery leicht zu handhaben:
Die Codekopie lautet wie folgt:
$ ("#id"). Bind ('Click', Funktion (e) {
//e.pagex, e.Pagey, E.Target ...... Verschiedene Daten
});
Es ist ziemlich bequem zu bedienen. Tatsächlich wird die Zuordnung dieses E -Parameters auch durch die Rückruffunktion erreicht. Dem Parameter wird ihm mit dem Rückrufparameter ein Objektwert zugewiesen. Freunde, die den JJQuery -Quellcode sorgfältig studiert haben, hätten dies entdecken sollen.
Es gibt auch das gleiche Prinzip in Ajaxs $ .get ('', {}, Funktion (Daten) {}) Datenparameter.
Schauen wir uns an, wie die Rückruffunktion im Jquery -Ereignisobjekt angewendet wird.
Aus Gründen der Bequemlichkeit habe ich einfach über einige Implementierungen im Zusammenhang mit $ geschrieben. Ich habe vorher geschrieben, dass "Xiaotan JQuery" eine relativ enge Methode für die Rahmenimplementierung hat. Ich schreibe nur einen einfachen Selektor unten.
Die Codekopie lautet wie folgt:
<div id = "Container">
</div>
<Script>
var _ $ = Funktion (ID)
{
this.element = document.getElementById (id);
}
_ $. prototype = {
BIND: Funktion (EVT, Rückruf)
{
var das = dies;
if (document.addeventListener)
{
this.element.adDeVentListener (EVT, Funktion (e) {
CALLBACK.CALL (that, that gleich (e));
} ,FALSCH);
}
sonst wenn (document.attachEvent)
{
this.element.attachEvent ('on'+evt, Funktion (e) {
CALLBACK.CALL (that, that gleich (e));
});
}
anders
this.element ['on'+evt] = Funktion (e) {
CALLBACK.CALL (that, that gleich (e));
};
},
standadize: function (e) {
var evt = e || window.event;
var pagex, pagey, Layerx, Schicht;
// pagex Horizontaler Koordinaten Seite vertikaler Koordinatenschichtklick befindet sich am horizontalen Koordinatenschicht. Klick befindet sich an der vertikalen Koordinate des Elements
if (evt.pagex)
{
pagex = evt.pagex;
pagey = evt.pagey;
}
anders
{
pagex = document.body.scrollleft+evt.clientx-dokument.body.clientleft;
pagey = document.body.scrolltop+evt.clienty-document.body.clientltop;
}
if (evt.layerx)
{
Layerx = evt.layerx;
Layery = evt.layery;
}
anders
{
Layerx = evt.OffsetX;
Layerxy = evt.offsety;
}
zurückkehren {
Pagex: Pagex,
Pagey: Pagey,
Layerx: Layerx,
Schichten: Schichten
}
}
}
Fenster. $ = Funktion (ID)
{
Neue _ $ (id) zurückgeben;
}
$ ('Container'). Bind ('Click', Funktion (e) {
Alarm (E.Pagex);
});
$ ('Container1'). Bind ('Click', Funktion (e) {
Alarm (E.Pagex);
});
</script>
Wir betrachten hauptsächlich die Implementierung der Standadize -Funktion. Ich werde nicht viel über diesen Code sagen, das Rückgabeobjekt ist
Die Codekopie lautet wie folgt:
zurückkehren {
Pagex: Pagex,
Pagey: Pagey,
Layerx: Layerx,
Schichten: Schichten
}
Schauen Sie sich dann den Code -Callback an. Dem Code wird dem E -Parameter tatsächlich einen Wert zugeordnet, der mit einem Rückruf implementiert wird.
Die anonyme Funktion wird übergeben, wenn die Rückruffunktion aufgerufen wird
Die Codekopie lautet wie folgt:
Funktion (e) {
}
callback.call (dies, das.Standadize (e)) entspricht der Ausführung eines solchen Code -Stücks
Die Codekopie lautet wie folgt:
(Funktion (e) {
}) (standadize (e))
Dies ist auch die klassische Sache bei JQuery mit Callback -Funktionen. So wird der E -Parameter zugewiesen. Nachdem Sie dies gesagt haben, haben Sie wahrscheinlich ein gutes Verständnis dafür und wie man es benutzt.
Rückrufe werden häufiger in verschiedenen Frameworks verwendet. Manchmal können Sie es auch nach der tatsächlichen Situation verwenden, wenn Sie etwas selbst schreiben.