Das Lesen dieses Artikels erfordert Programmiererfahrung in anderen Sprachen.
Einfache Typen in JavaScript umfassen:
1. Zahlen
2. Zeichenfolge
3.Boolescher Wert (wahr und falsch)
4.null
5.undefiniert
Alle anderen Typen sind Objekte (lassen wir uns nicht vom Rückgabewert des Typeof-Operators täuschen), zum Beispiel:
1. Funktion
2.Array
3. Regulärer Ausdruck
4. Objekte (Objekte sind von Natur aus Objekte)
Objektgrundlagen
In JavaScript ist ein Objekt eine Sammlung von Attributen (ein Objekt ist ein assoziatives Array). Jedes Attribut enthält:
1. Attributname, muss eine Zeichenfolge sein
2. Attributwert, der ein beliebiger Wert außer undefiniert
Erstellen Sie ein Objekt aus einem Objektliteral:
Attributname und Attributwert des Objekts:
Wenn der Attributname eine gültige Kennung ist, können die Anführungszeichen weggelassen werden:
Sehen wir uns ein Beispiel für den Grundstückszugang an:
Wenn der Attributname keine gültige Kennung ist, muss er in Anführungszeichen gesetzt werden. Eine nicht vorhandene Eigenschaft hat den Wert undefiniert. Objekte werden als Referenz und nicht als Wert übergeben:
Hier beziehen sich x und Eigentümer auf dasselbe Objekt.
Die Eigenschaften eines Objekts können mit dem Löschoperator gelöscht werden:
Prototyp des Objekts
Jedes Objekt ist mit einem Prototypobjekt verknüpft und Objekte können Eigenschaften vom Prototypobjekt erben. Wir erstellen ein Objekt durch ein Objektliteral und sein Prototypobjekt ist das Object.prototype-Objekt (das Object.prototype-Objekt selbst hat kein Prototypobjekt). Wenn wir ein Objekt erstellen, können wir das Prototypobjekt des Objekts festlegen (wir werden die spezifische Einstellungsmethode später besprechen). Wenn Sie versuchen, eine Eigenschaft eines Objekts abzurufen (anstatt sie zu ändern), versucht JavaScript, die Eigenschaft vom Prototypobjekt des Objekts abzurufen, wenn die Eigenschaft im Prototypobjekt nicht vorhanden ist , dann vom Prototyp-Objekt Das Prototyp-Objekt wird durchsucht, und so weiter, bis das Object.prototype-Prototyp-Objekt gefunden wird. Wenn wir ein bestimmtes Attribut des Objekts ändern, hat dies im Vergleich zum Abrufen von Attributen keine Auswirkungen auf das Prototypobjekt.
Funktionsgrundlagen
Funktionen sind in JavaScript auch Objekte, die mit dem Prototypobjekt Function.prototype verknüpft sind (Function.prototype ist mit Object.prototype verknüpft). Die Funktion verfügt über eine Eigenschaft namens „prototyp“ und der Typ ihres Werts ist ein Objekt. Dieses Objekt verfügt über eine Eigenschaft „Konstruktor“ und der Wert des Konstruktors ist diese Funktion:
Funktionen sind Objekte wie Objekte. Das heißt, Funktionen können in Variablen und Arrays gespeichert, als Parameter an Funktionen übergeben werden und Funktionen können innerhalb von Funktionen definiert werden. Nebenbei bemerkt haben Funktionen zwei versteckte Eigenschaften:
1. Funktionskontext
2. Funktionscode
Die Funktion wird wie folgt erstellt:
Der Funktionsname nach dem Schlüsselwort function ist optional. Wir formulieren den Funktionsnamen hauptsächlich für mehrere Zwecke:
1. Für rekursive Aufrufe
2. Wird von Debuggern, Entwicklungstools usw. verwendet, um Funktionen zu identifizieren
Oft benötigen wir keinen Funktionsnamen. Eine Funktion ohne Funktionsnamen wird als anonyme Funktion bezeichnet. Die Parameterliste ist in Klammern eingeschlossen. JavaScript erfordert keine Übereinstimmung zwischen tatsächlichen Parametern und formalen Parametern, zum Beispiel:
Wenn zu viele tatsächliche Parameter vorhanden sind, werden die zusätzlichen tatsächlichen Parameter ignoriert. Wenn zu wenige tatsächliche Parameter vorhanden sind, ist der Wert des nicht zugewiesenen formalen Parameters undefiniert. Die Funktion muss einen Rückgabewert haben. Wenn der Rückgabewert nicht durch die Return-Anweisung angegeben wird, ist der Rückgabewert der Funktion undefiniert.
Eine Funktion und die externen Variablen, auf die sie zugreift, bilden einen Abschluss. Das ist das Schöne an JavaScript.
Funktionsaufruf
Wenn jede Funktion aufgerufen wird, erhält sie zwei zusätzliche Parameter:
1.dieses
2.Argumente
Der Wert hängt vom jeweiligen Aufrufmodus ab. Es gibt vier Aufrufmodi in JavaScript:
1. Methodenaufrufmodus. Wenn eine Eigenschaft eines Objekts eine Funktion ist, wird sie als Methode bezeichnet. Wenn eine Methode über o.m(args) aufgerufen wird, ist dies das Objekt o (man erkennt, dass this und o nur beim Aufruf gebunden sind), zum Beispiel:
2. Funktionsaufrufmodus. Wenn eine Funktion keine Eigenschaft eines Objekts ist, wird sie als Funktion aufgerufen und diese an das globale Objekt gebunden, zum Beispiel:
Dieses Verhalten ist manchmal verwirrend, schauen wir uns ein Beispiel an:
Das gewünschte Ergebnis sollte sein:
3. Konstruktor-Aufrufmodus. Funktionen, denen das Präfix new vorangestellt werden soll, werden Konstruktoren genannt, zum Beispiel:
Eine Funktion kann aufgerufen werden, indem man new davor einfügt (solche Funktionen beginnen normalerweise mit einem Großbuchstaben). Nach dem Hinzufügen von new wird ein Objekt erstellt, das mit der Prototypeigenschaft dieser Funktion verknüpft ist, und dies im Konstruktor sei dieses Objekt.
4.Anrufmodus anwenden. Die Apply-Methode der Funktion wird zum Aufrufen der Funktion verwendet, die über zwei Parameter verfügt, der erste ist dieser und der zweite ist das Parameterarray, zum Beispiel:
Wenn die Funktion aufgerufen wird, können wir auf ein Klassenarray mit dem Namen arguments (kein echtes JavaScript-Array) zugreifen, das alle tatsächlichen Parameter enthält, sodass wir Parameter variabler Länge implementieren können:
Ausnahme
Lassen Sie uns nun über den Ausnahmebehandlungsmechanismus von JavaScript sprechen. Wir verwenden die throw-Anweisung, um Ausnahmen auszulösen, und die try-cache-Anweisung, um Ausnahmen abzufangen und zu behandeln:
Eigenschaften zu JavaScript-Typen hinzufügen
Konstruktoren gibt es für die meisten Typen in JavaScript:
1. Der Konstruktor des Objekts ist Object
2. Der Konstruktor des Arrays ist Array
3. Der Konstruktor der Funktion ist Function
4. Der Konstruktor von string ist String
5. Der Konstruktor von Zahlen ist Number
6. Der Konstruktor von Boolean ist Boolean
7. Der Konstruktor des regulären Ausdrucks ist RegExp
Wir können dem Prototyp des Konstruktors Eigenschaften (häufig Methoden) hinzufügen, um diese Eigenschaft für verwandte Variablen verfügbar zu machen:
Geltungsbereich
JavaScript erfordert Funktionen zum Erstellen des Bereichs:
Hier wird eine anonyme Funktion erstellt und ausgeführt. Sie können Variablen, die Sie nicht offenlegen möchten, über den Gültigkeitsbereich ausblenden:
Erben
Es gibt viele Möglichkeiten, Vererbung in JavaScript zu implementieren.
Beim Erstellen eines Objekts können wir das mit dem Objekt verknüpfte Prototypobjekt festlegen. Wir machen Folgendes:
Die Object.create-Methode ist in ECMAScript 5 definiert. Wenn Sie ECMAScript 3 verwenden, können Sie selbst eine Create-Methode implementieren:
Über die Object.create-Methode führen wir eine prototypbasierte Vererbung durch: Ein neues Objekt erbt direkt die Eigenschaften eines alten Objekts (im Vergleich zur klassenbasierten Vererbung besteht keine Notwendigkeit für die Existenz einer Klasse und des Objekts direkt erbt das Objekt). Beispiel:
Der obige Code ist sehr einfach, kann jedoch private Mitglieder nicht schützen. Wir können Modulmuster verwenden. Im Modulmuster wird ein bestimmter Objekttyp von einer Funktion generiert und der Funktionsumfang wird verwendet, um private Mitglieder vor externem Zugriff zu schützen:
Im Modulmuster wird die Vererbung durch den Aufruf von Konstruktoren erreicht. Darüber hinaus können wir auch in der Unterklasse auf die Methoden der übergeordneten Klasse zugreifen: