Objekt()

Mit der eingebauten Object () - Konstruktorfunktion können Sie generisch leere Objekte erstellen. Wenn Sie sich noch an den Anfang von Kapitel 1 erinnern, haben wir genau das getan, indem wir das Cody-Objekt erstellt haben. Lass das Cody-Objekt neu erstellen.

Beispiel: sample69.html

 

Hier benutzen wir nur die Objekt() Konstruktorfunktion, um ein generisches Objekt namens cody zu erstellen. Sie können an das denken Objekt() Konstruktor als Cookie-Cutter zum Erstellen von leeren Objekten ohne vordefinierte Eigenschaften oder Methoden (mit Ausnahme derjenigen, die von der Prototypkette geerbt wurden).

Wenn es nicht offensichtlich ist, die Objekt() Konstruktor ist selbst ein Objekt. Das heißt, die Konstruktorfunktion basiert auf einem Objekt, das von erstellt wird Funktion Konstrukteur. Das kann verwirrend sein. Erinnere dich einfach daran wie das Array Konstruktor, der Objekt Konstruktor spuckt einfach leere Objekte aus. Und ja, Sie können alle leeren Objekte erstellen, die Sie mögen. Das Erstellen eines leeren Objekts wie cody unterscheidet sich jedoch wesentlich vom Erstellen einer eigenen Konstruktorfunktion mit vordefinierten Eigenschaften. Stellen Sie sicher, dass Sie verstehen, dass cody nur ein leeres Objekt ist, das auf dem basiert Objekt() Konstrukteur. Um die Möglichkeiten von JavaScript wirklich nutzen zu können, müssen Sie nicht nur lernen, wie leere Objektcontainer erstellt werden Objekt(), aber auch wie man eine eigene "Klasse" von Objekten baut (Person()) wie Objekt() Konstruktorfunktion selbst.


Objekt() Parameter

Das Objekt() Die Konstruktorfunktion benötigt einen optionalen Parameter. Dieser Parameter ist der Wert, den Sie erstellen möchten. Wenn Sie keinen Parameter angeben, dann a Null oder nicht definiert Wert wird angenommen.

Beispiel: sample70.html

 

Wenn ein Wert dabei Null oder nicht definiert wird an die übergeben Objekt Konstruktor wird der übergebene Wert als Objekt erstellt. Theoretisch können wir das verwenden Objekt() Konstruktor, um andere native Objekte zu erstellen, die über einen Konstruktor verfügen. Im nächsten Beispiel mache ich genau das.

Beispiel: sample71.html

 

Objekt() Eigenschaften und Methoden

Das Objekt() Das Objekt verfügt über die folgenden Eigenschaften (ohne geerbte Eigenschaften und Methoden):

Eigenschaften (Object.prototype;):

  • Prototyp

Objekt() Instanzeigenschaften und -methoden

Objekt() Objektinstanzen haben die folgenden Eigenschaften und Methoden (enthält keine geerbten Eigenschaften und Methoden):

Instanzeigenschaften (var meinObjekt = ; myObject.constructor;):

  • Konstrukteur

Instanzmethoden (var meinObjekt = ; myObject.toString ();):

  • hasOwnProperty ()
  • isPrototypeOf ()
  • propertyIsEnumerable ()
  • toLocaleString ()
  • toString ()
  • Wert von()

Die Prototypkette endet mit Objektprotokoll, und damit alle Eigenschaften und Methoden von Objekt() werden von allen JavaScript-Objekten vererbt.


Erstellen Objekt() Objekte, die "Objektliterale" verwenden

Beim Erstellen eines "Objekt-Literal" wird ein Objekt mit oder ohne Eigenschaften mit geschweiften Klammern instanziiert (var cody = ;). Erinnern Sie sich am Anfang von Kapitel 1, als wir das einmalige Cody-Objekt erstellt und dann die Cody-Objekteigenschaften mit Punktnotation angegeben haben? Lass uns das nochmal machen.

Beispiel: sample72.html

 

Beachten Sie im Code, dass das erstellt cody object und seine Eigenschaften nahmen fünf Aussagen an. Mit der Objekt-Literalnotation können wir dasselbe ausdrücken cody Objekt in einer Anweisung.

Beispiel: sample73.html

  

Die Verwendung der Literalnotation gibt uns die Möglichkeit, Objekte einschließlich definierter Eigenschaften mit weniger Code zu erstellen und die zugehörigen Daten visuell zu kapseln. Beachten Sie die Verwendung der : und , Operatoren in einer einzigen Anweisung. Dies ist eigentlich die bevorzugte Syntax für das Erstellen von Objekten in JavaScript, da sie einfach und lesbar ist.

Sie sollten wissen, dass Eigenschaftsnamen auch als Zeichenfolgen angegeben werden können:

Beispiel: sample74.html

  

Es ist nicht erforderlich, Eigenschaften als Zeichenfolgen anzugeben, es sei denn, der Name der Eigenschaft:

  • Ist eines der reservierten Schlüsselwörter (Klasse).
  • Enthält Leerzeichen oder Sonderzeichen (andere Zeichen als Zahlen, Buchstaben, Dollarzeichen ($) oder Unterstrich (_)).
  • Beginnt mit einer Nummer.

Vorsichtig! Die letzte Eigenschaft eines Objekts sollte kein nachfolgendes Komma enthalten. Dies führt in einigen JavaScript-Umgebungen zu einem Fehler.


Alle Objekte erben von Objektprotokoll

Das Objekt() Konstruktorfunktion in JavaScript ist etwas Besonderes Prototyp Eigenschaft ist die letzte Station in der Prototypkette.

Im folgenden Beispiel werde ich das erweitern Objektprotokoll mit einer foo Eigenschaft und erstellen Sie dann eine Zeichenfolge und versuchen Sie, auf die foo Eigenschaft, als ob es eine Eigenschaft der Zeichenketteninstanz wäre. Seit der myString Instanz hat keine foo Eigenschaft setzt die Prototypkette ein und der Wert wird gesucht String.prototype. Es ist nicht da, also ist der nächste Ort zu suchen Objektprotokoll, Dies ist der letzte Ort, an dem JavaScript nach einem Objektwert sucht. Das foo value wurde gefunden, weil ich ihn hinzugefügt habe, also gibt er den Wert von zurück foo.

Beispiel: sample75.html

  

Fazit

Vorsichtig! Alles was hinzugefügt wird Objektprotokoll erscheint in einem für in Schleife und die Prototypkette. Aus diesem Grund wurde gesagt, dass sich das ändert Objektprotokoll ist verboten.