Das Verständnis davon war immer, dass es verwendet werden kann und verwendet werden kann, aber es hat sich nicht mit seinem Wesen befasst. Dieses Mal habe ich durch „JavaScript The Good Parts“ ein tiefes Verständnis gewonnen. (Alle Debugging-Vorgänge können in der Konsole angezeigt werden, Browser-F12-Taste)
Lass uns das gemeinsam anschauen.
Wenn wir eine Funktion deklarieren, verfügt jede Funktion zusätzlich zu den Parametern (formalen Parametern) bei ihrer Definition auch über zwei zusätzliche Parameter, einer ist dieser und der andere sind Argumente (tatsächliche Parameter). Argumente sind die tatsächlich von der Funktion empfangenen Parameter, bei denen es sich um ein Array-ähnliches Array handelt. Ich werde nur eine kurze Einführung in die Argumente geben und mich dabei auf diesen Zeiger konzentrieren.
Bei der objektorientierten Programmierung ist dies sehr wichtig und sein Wert hängt vom Aufrufmodus ab. In JavaScript gibt es insgesamt 4 Aufrufmodi: Methodenaufrufmodus, Funktionsaufrufmodus, Konstruktoraufrufmodus und Anwendungsaufrufmodus.
Methodenaufrufmodus
Wenn eine Funktion als Eigenschaft eines Objekts verwendet wird, nennen wir die Funktion normalerweise eine Methode des Objekts. Wenn diese Methode aufgerufen wird, zeigt sie auf das Objekt, zu dem die Methode gehört.
Wie in der Kastanie gezeigt, verweist dies auf das sayName-Objekt. Diese Methode zum Abrufen des Kontexts des Objekts ist eine öffentliche Methode. (öffentliche Methode)
Funktionsaufrufmodus
Wenn eine Funktion aufgerufen wird, aber keine Methode für ein Objekt ist, wird sie als Funktion aufgerufen.
Beim Aufruf in diesem Modus zeigt dies auf das Fensterobjekt, auch wenn diese Funktion möglicherweise in einer externen Funktion aufgerufen wird. Schauen wir uns ein Beispiel an.
So gesehen wissen Sie wahrscheinlich, wie Sie den „Designfehler“ von JavaScript beheben können.
Ja, speichern Sie dies einfach in der Student-Funktion (Zeile 6). Übertragen Sie dies dann über eine Variable auf die Funktion sayName und Sie können es lösen!
Konstruktor-Aufrufmodus
Wenn Sie über Konstruktoren in JavaScript sprechen, werden Sie denken: „Schreiben Sie den Funktionsnamen groß! Verwenden Sie beim Aufruf den neuen Operator!“ Die Großschreibung des Funktionsnamens ist leicht zu verstehen und dient dazu, die Benennung von Konstruktoren zu standardisieren und zu vereinheitlichen. Aber haben Sie sich schon einmal damit beschäftigt, warum Sie „new“ verwenden müssen? Wenn Sie eine Funktion mit new davor aufrufen, erstellt der Funktionshintergrund ein neues Objekt, das auf den Prototyp der Funktion zeigt, und dieser wird ebenfalls an das neue Objekt gebunden. JavaScript ist eine Sprache, die auf der Prototypenvererbung basiert. Schüler, die sich über den Prototyp nicht im Klaren sind, können die Informationen selbst überprüfen.
Werfen wir zunächst einen Blick darauf, wie ein Konstruktor im Allgemeinen aussieht.
Es spielt keine Rolle, dass eine Funktion, wenn sie über new aufgerufen wird, hinter den Kulissen „schlechte Dinge“ tut.
Anrufmodus anwenden
Die Methode apply ermöglicht es uns, ein Array von Parametern zu erstellen, die an die aufrufende Funktion übergeben werden, und ermöglicht uns auch, diesen Wert zu ändern.
function.apply(dieser gebundene Wert, Argumentparameter-Array)Es gibt zu viel, was man über Bewerbung sagen kann. Ich werde Ihnen nur ein paar Beispiele geben, um Ihnen das Verständnis zu erleichtern: