Heim > Artikel > Web-Frontend > So schreiben Sie hochwertigen JS-Code (Fortsetzung)_Javascript-Kenntnisse
In Fortsetzung des vorherigen Artikels „So schreiben Sie hochwertigen JS-Code“ werde ich dieses Mal die Wissenspunkte von Javascript-Funktionen klären.
2. Verwenden Sie die Funktion
Funktionen bieten Programmierern die wichtigsten abstrakten Funktionen und Implementierungsmechanismen. Funktionen können unabhängig voneinander verschiedene Funktionen in anderen Sprachen implementieren, z. B. Prozeduren, Methoden, Konstruktoren und sogar Klassen oder Module.
2.1 Verstehen Sie die Unterschiede zwischen Funktionsaufrufen, Methodenaufrufen und Konstruktoraufrufen
Für die objektorientierte Programmierung sind Funktionen, Methoden und Klassenkonstruktoren drei verschiedene Konzepte.
Nutzungsmodus:
1, Funktionsaufruf
2, Methodenaufruf
Diese Variable ist an das Objekt gebunden, da die Hello-Methode im obj-Objekt definiert ist. Wir können dieselbe Funktionsreferenz auch einem anderen Objekt zuweisen und dieselbe Antwort erhalten.
3, der Konstruktor verwendet
Die Verwendung des neuen Operators zum Aufrufen des Benutzers wird als Konstruktor betrachtet.
Anders als Funktionsaufrufe und Methodenaufrufe verwenden Konstruktoraufrufe ein brandneues Objekt als Wert dieser Variablen und geben dieses neue Objekt implizit als Aufrufergebnis zurück. Die Hauptaufgabe des Konstruktors besteht darin, dieses neue Objekt zu initialisieren.
2.2 Beherrscht Funktionen höherer Ordnung
Funktionen höherer Ordnung sind nichts anderes als solche Funktionen, die eine Funktion als Parameter annehmen oder einen Wert zurückgeben (oft als Callback-Funktion bezeichnet, weil die Funktion höherer Ordnung sie „dann aufruft“) Eine besonders kraftvolle und ausdrucksstarke Art und Weise. Redewendungen werden auch häufig in JS-Programmen verwendet.
Betrachten Sie die Standard-Sortiermethode für Arrays. Damit sie für alle Arrays funktioniert, muss der Aufrufer entscheiden, wie zwei beliebige Elemente im Array verglichen werden sollen.
Das obige Beispiel wird durch die Verwendung einer anonymen Funktion weiter vereinfacht.
Das Erlernen der Verwendung von Funktionen höherer Ordnung vereinfacht oft den Code und eliminiert langwierigen Standardcode. Wir können eine Schleife verwenden, um eine einfache Konvertierung eines String-Arrays zu implementieren:
Durch die Verwendung der praktischen Kartenmethode des Arrays können Schleifen vermieden werden und nur eine lokale Funktion verwendet werden, um Elemente einzeln zu konvertieren.
Darüber hinaus möchten wir beispielsweise mehrere Methoden zum Erstellen unterschiedlicher Zeichenfolgen mit gemeinsamer Implementierungslogik erstellen, und jede Schleife erstellt eine Zeichenfolge, indem die Berechnungsergebnisse jedes unabhängigen Teils verkettet werden.
Dies ermöglicht es den Lesern, ein klareres Verständnis davon zu bekommen, was der Code leisten kann, ohne auf Implementierungsdetails eingehen zu müssen.
Bemerkungen
Javascript gibt die Formel für eine Zufallszahl im angegebenen Bereich (zwischen m-n) zurück: Math.random()*(n-m) m
Achten Sie gleichzeitig auf die Anforderungen der Frage und darauf, ob die Rückgabe einer positiven Ganzzahl erforderlich ist
2.3 Anrufmodus
Durch den Aufruf einer Funktion wird die Ausführung der aktuellen Funktion angehalten und die Steuerung und Parameter an die neue Funktion übergeben. Zusätzlich zu den bei der Deklaration definierten formalen Parametern erhält jede Funktion zwei neue zusätzliche Parameter: this und arguments.
Dies ist ein sehr wichtiger Parameter, dessen Wert vom Aufrufmodus bestimmt wird.
Im Folgenden sind 4 wichtige Aufrufmuster in JavaScript aufgeführt:
a. das Methodenaufrufmuster
b. das Funktionsaufrufmuster
c. das Konstruktor-Aufrufmuster
d. Wenden Sie das Apply-Aufrufmuster an
Diese Modi unterscheiden sich darin, wie der Schlüsselparameter this initialisiert wird
1. Die Methodenaufrufmethode
Wenn eine Funktion als Methode eines Objekts dient, nennen wir die Funktion eine Methode. Beim Aufruf einer Methode wird diese an das aufrufende Objekt gebunden.
Zusammenfassung:
1. Methoden, die dadurch den Kontext der Objekte erhalten können, zu denen sie gehören, werden öffentliche Methoden genannt
2. Wenn Sie eine Funktion mit . oder einem tiefgestellten Ausdruck verwenden, handelt es sich um den Methodenaufrufmodus, und dieses Objekt ist an das vorherige Objekt gebunden.
3. Eine Funktion kann damit auf das Objekt zugreifen, sodass sie den Wert des Objekts abrufen oder den Wert des Objekts ändern kann. Die Bindung an das Objekt erfolgt zum Zeitpunkt des Aufrufs.
2. das Funktionsaufrufmuster
Wenn eine Funktion keine Eigenschaft eines Objekts ist, wird sie als Funktion aufgerufen. Wenn eine Funktion als Funktionsaufrufmodus aufgerufen wird, ist diese an das globale Objekt gebunden. Dies war ein Designfehler in JavaScript, der weiterhin besteht.
3. das Konstruktor-Aufrufmuster
JavaScript ist eine Sprache, die auf prototypischer Vererbung basiert, was bedeutet, dass Objekte Eigenschaften direkt von anderen Objekten erben können und die Sprache klassenlos ist.
Wenn Sie eine Funktion mit new davor aufrufen, erhalten Sie ein neues Objekt, das das mit der Funktion verbundene Prototyp-Mitglied verbirgt, und dieses wird auch an das neue Objekt gebunden.
Das neue Präfix ändert auch das Verhalten der Return-Anweisung. Dies ist auch keine empfohlene Art der Programmierung.
4. Wenden Sie das Apply-Aufrufmuster an
Da JavaScript eine funktionale objektorientierte Sprache ist, können Funktionen Methoden haben.
Die Apply-Methode hat zwei Parameter, der erste ist der Wert, der daran gebunden wird, und der zweite ist das Parameter-Array. Mit anderen Worten, die Apply-Methode ermöglicht es uns, ein Array zu erstellen und es zum Aufrufen der Funktion zu verwenden , wodurch wir diesen Wert auswählen können. Mit dem Wert können wir auch den Wert des Arrays auswählen.
Normalerweise wird der Empfänger einer Funktion oder Methode (der an das spezielle Schlüsselwort this gebundene Wert) durch die Syntax des Aufrufers bestimmt. Insbesondere bindet die Methodenaufrufsyntax das Methodenobjekt an diese Variable. Manchmal ist es jedoch erforderlich, einen benutzerdefinierten Empfänger zum Aufrufen einer Funktion zu verwenden. Zu diesem Zeitpunkt müssen Sie die Aufrufmethode oder die Bindungsmethode verwenden, um den Empfänger so anzupassen, dass er die Methode
aufruft2.4 Verwenden Sie die Bind-Methode, um Methoden mit bestimmten Empfängern zu extrahieren
Da es keinen Unterschied zwischen Methoden und Eigenschaften gibt, deren Wert eine Funktion ist, ist es auch einfach, die Methode des Objekts zu extrahieren und die Funktion als Rückruffunktion zu extrahieren und direkt an die Funktion höherer Ordnung zu übergeben.
Man vergisst aber auch leicht, den Empfänger der extrahierten Funktion an das Objekt zu binden, aus dem die Funktion extrahiert wurde.
Zu diesem Zeitpunkt ist der Empfänger von butter.add nicht das Butterobjekt. Der Empfänger der Funktion hängt davon ab, wie sie aufgerufen wird. Die forEach-Methode wird im globalen Bereich aufgerufen, daher verwendet die Implementierung der forEach-Methode das globale Objekt als Standardempfänger. Da es im globalen Objekt kein Einträge-Attribut gibt Code löst einen Fehler aus.
Die forEach-Methode ermöglicht es dem Aufrufer, einen optionalen Parameter als Empfänger der Rückruffunktion bereitzustellen.
Aber nicht alle Funktionen höherer Ordnung sind durchdacht genug, um Benutzern Rückruffunktionsempfänger bereitzustellen.
Es gibt zwei Lösungen:
1) Erstellen Sie eine Wrapper-Funktion, die add explizit über eine Pufferobjektmethode aufruft. Unabhängig davon, wie die umschlossene Funktion aufgerufen wird, wird immer garantiert, dass sie ihre Parameter in das Zielarray schiebt.
2) Die Bindungsmethode des Funktionsobjekts erfordert ein Empfängerobjekt und generiert eine Wrapper-Funktion, die die ursprüngliche Funktion mithilfe des Methodenaufrufs des Empfängerobjekts aufruft.
Bemerkungen
buffer.add.bind(buffer) erstellt eine neue Funktion, anstatt die buffer.add-Funktion zu ändern:
buffer.add === buffer.add.bind(buffer); //false
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.