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()
ParameterDas 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 MethodenDas Objekt()
Das Objekt verfügt über die folgenden Eigenschaften (ohne geerbte Eigenschaften und Methoden):
Eigenschaften (Object.prototype;
):
Prototyp
Objekt()
Instanzeigenschaften und -methodenObjekt()
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.
Objekt()
Objekte, die "Objektliterale" verwendenBeim 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:
Klasse
).Vorsichtig! Die letzte Eigenschaft eines Objekts sollte kein nachfolgendes Komma enthalten. Dies führt in einigen JavaScript-Umgebungen zu einem Fehler.
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
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.