JavaScript: Learn ‚this‘ – finding CALL-SITE of a function

Dies ist der erste Artikel einer Serie, die ich mache, die sich darauf konzentriert zu lernen, was this wirklich in JS ist. Um richtig zu bestimmen, an was this bindet, sollten wir zuerst einige grundlegende Konzepte verstehen, die wir benötigen, wenn wir this Bindung in JS und zu wissen, was die Aufrufstelle einer Funktion ist, ist eines dieser entscheidenden Konzepte.

Bevor wir uns mit der Call-Site einer Funktion befassen, versuchen wir zunächst zu verstehen, WARUM wir Call-site überhaupt kennen müssen. Die Gründe sind wie folgt:

  1. Es ist wahrscheinlich etwas sehr Einfaches, in einem Stück Code zu ’site‘. Manchmal können jedoch bestimmte Codierungsmuster die tatsächliche Aufrufstelle verbergen. Um alle Unklarheiten in Bezug auf dieses Thema zu beseitigen, müssen Sie die Call-Site (sehr klar) verstehen.
  2. Es ist das einzige, was zählt, wenn Sie verstehen möchten, wie this Bindung funktioniert.

Lassen Sie uns nun die Aufrufstelle einer Funktion verstehen.

Im Allgemeinen ist die Aufrufstelle einer Funktion ‚der Ort, von dem aus die bestimmte Funktion in einem bestimmten Codeteil aufgerufen wird‘. Gehen Sie also zu diesem Ort und Sie wissen, wo sich die Aufrufstelle dieser Funktion befindet!

Lassen Sie uns nun durch das folgende Code-Snippet herausfinden, wo die Aufrufseiten von Funktionen sind:

Das war einfach! Aber es gibt ein kleines Problem mit dieser Art, die Call-Site zu finden: Manchmal kann es schwierig sein, sie manuell zu erkennen (zum Beispiel: Stellen Sie sich 1000 Zeilen Code vor und Sie müssen die Call-Site manuell finden!).

Hier kommt der Call-Stack ins Spiel. Was ist ein Call-Stack? Es ist ein Stapel (wie der Name schon sagt). Von was? Von Funktionen. Welche Funktionen? Von allen Funktionen, die aufgerufen wurden. Wozu? Um Sie dorthin zu bringen, wo Sie sich gerade in Ihrer Ausführung befinden (dh zum aktuellen Zeitpunkt der Ausführung).

Wenn Sie sich Ihren Call-Stack ansehen, befindet sich die eigentliche Call-Site INNERHALB des Funktionsaufrufs VOR der gerade ausgeführten Funktion.

Verwenden wir nun call-stack, um die Aufrufseiten von Funktionen in demselben Code zu finden, der oben verwendet wurde:

KURZER TIPP: Anstatt manuell herauszufinden, in welcher Reihenfolge Funktionen aufgerufen wurden (dies ist fehleranfällig und mühsam), sollten Sie das Debugger-Tool in Ihrem Browser verwenden, um den Aufrufstapel anzuzeigen. Der Debugger stoppt an der Zeile, in der Sie Ihren Haltepunkt festgelegt haben, und zeigt Ihnen den Aufrufstapel an, dh er zeigt Ihnen alle Funktionen, die aufgerufen wurden, um Sie an dieser Stelle im Code zu erhalten. Daher ist die reale Aufrufstelle die zweite Funktion von oben in diesem Aufrufstapel (dh INNERHALB des Funktionsaufrufs VOR der gerade ausgeführten Funktion).

Somit können Sie die Aufrufstelle einer Funktion auf 2 Arten finden:

  1. durch manuelles Erkennen der Position, an der die Funktion in einem bestimmten Codeteil aufgerufen wurde, oder
  2. durch Betrachten des Aufrufstapels (vorzugsweise mit Debugger-Tools).

Verwenden Sie im Zweifelsfall (und im Allgemeinen auch) immer den Aufrufstapel, um die Aufrufstelle einer Funktion korrekt zu identifizieren.

Das war’s! Dies ist alles, was Sie wissen müssen, um die Aufrufstelle einer Funktion zu finden!

Nächste Schritte:

Der nächste Artikel dieser Serie, JavaScript: Learn ‚this‘ – also, was ist ein KONSTRUKTOR überhaupt?, konzentriert sich auf das Verständnis von Konstruktoren in JS.

Danke fürs Lesen. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.