de.hideout-lastation.com
Paradies Für Designer Und Entwickler


Objektorientiertes JavaScript (OOJS): 3 Möglichkeiten zum Erstellen von Objektinstanzen

Wenn es in einer Programmiersprache nur um Objekte geht, müssen wir als erstes lernen , Objekte zu erstellen . Das Erstellen von Objekten in JavaScript ist ziemlich einfach: Ein Paar geschweifte Klammern erledigt die Aufgabe, aber das ist weder die einzige Möglichkeit, ein Objekt zu erstellen, noch die einzige Möglichkeit, die Sie jemals brauchen werden.

In JavaScript werden Objektinstanzen aus integrierten Objekten erstellt und werden beim Ausführen des Programms erstellt. Zum Beispiel ist Date ein eingebautes Objekt, das uns Informationen über Daten liefert. Wenn wir das aktuelle Datum auf einer Seite anzeigen möchten, benötigen wir eine Laufzeitinstanz von Date, die Informationen über das aktuelle Datum enthält.

JavaScript erlaubt uns auch, eigene Objekte zu definieren, die zur Laufzeit eigene Objektinstanzen erzeugen können. In JavaScript ist alles ein Objekt und jedes Objekt hat einen ultimativen Vorfahren namens Object . Die Erstellung einer Objektinstanz wird Instanziierung genannt .

1. Der new Betreiber

Eine der gebräuchlichsten und bekanntesten Methoden zum Erstellen einer neuen Objektinstanz ist die Verwendung des new Operators .

Sie benötigen einen Konstruktor, damit der new Operator funktioniert. Ein Konstruktor ist eine Methode eines Objekts, die eine neue Instanz dieses Objekts zusammenstellt . Die grundlegende Syntax sieht folgendermaßen aus:

 neuer Konstruktor () 

Ein Konstruktor kann Argumente akzeptieren, die zum Ändern oder Hinzufügen von Eigenschaften zu der Objektinstanz, die er konstruiert, verwendet werden können. Der Konstruktor hat denselben Namen wie das Objekt, zu dem er gehört.

Im Folgenden finden Sie ein Beispiel zum Erstellen einer Instanz des Date() Objekts mit dem new Schlüsselwort:

 dt = neues Datum (2017, 0, 1) console.log (dt) // So Jan 01 2017 00:00:00 GMT + 0100 

Date() ist der Konstruktor zum Erstellen eines neuen Date Objekts. Verschiedene Konstruktoren für ein Objekt verwenden unterschiedliche Argumente, um dieselbe Art von Objektinstanzen mit unterschiedlichen Attributen zu erstellen.

Nicht alle in JavaScript integrierten Objekte können wie Date instanziiert werden. Es gibt Objekte, die nicht mit einem Konstruktor kommen : Math, JSON und Reflect, aber sie sind immer noch gewöhnliche Objekte.

Unter den integrierten Objekten, die Konstruktoren haben, kann Symbol im Konstruktorstil nicht aufgerufen werden, um eine neue Symbol Instanz zu instanziieren. Es kann nur als Funktion aufgerufen werden, die einen neuen Symbolwert zurückgibt.

Unter den integrierten Objekten, die Konstruktoren haben, müssen nicht alle ihre Konstruktoren mit dem new Operator aufgerufen werden, um instanziiert zu werden. Function, Array, Error und RegExp können auch als Funktionen aufgerufen werden, ohne das new Schlüsselwort zu verwenden, und sie werden eine neue Objektinstanz instanziieren und zurückgeben.

2. Das Reflect Objekt

Back-End-Programmierer sind möglicherweise bereits mit Reflection-APIs vertraut. Reflection ist eine Eigenschaft von Programmiersprachen, um einige der grundlegenden Entitäten wie Objekte und Klassen zur Laufzeit zu überprüfen und zu aktualisieren .

In JavaScript konnten Sie bereits einige Reflektionsoperationen mit Object ausführen. Aber auch in JavaScript wurde eine echte Reflection API entwickelt .

Das Reflect Objekt verfügt über eine Reihe von Methoden zum Erstellen und Aktualisieren von Objektinstanzen . Das Reflect Objekt hat keinen Konstruktor, daher kann es nicht mit dem new Operator instanziiert werden und genau wie Math und JSON kann es auch nicht als Funktion aufgerufen werden.

Reflect hat jedoch ein Äquivalent des new Operators : die Reflect.construct() -Methode.

 Reflect.construct (target, argumentsList [, newTarget]) 

Sowohl das newTarget als auch das optionale newTarget Argument sind Objekte mit eigenen Konstruktoren, während argumentsList eine Liste von Argumenten ist, die an den Konstruktor von target .

 var dt = Reflect.construct (Datum, [2017, 0, 1]); console.log (dt); // So Jan 01 2017 00:00:00 GMT + 0100 

Der obige Code hat denselben Effekt wie die Instanziierung von Date() mit dem new Operator. Obwohl Sie immer noch new, ist Reflection ein ECMAScript 6-Standard . Sie können auch das newTarget Argument verwenden, was einen weiteren Vorteil gegenüber dem new Operator darstellt.

Der Wert des Prototyps von newTarget (um genau zu sein, ist der Prototyp des newTarget von newTarget ) wird zum Prototyp der neu erstellten Instanz .

Ein Prototyp ist die Eigenschaft eines Objekts, dessen Wert ebenfalls ein Objekt ist, das die Eigenschaften des ursprünglichen Objekts enthält. Kurz gesagt, ein Objekt erhält seine Mitglieder von seinem Prototyp.

Hier sehen wir ein Beispiel:

 Klasse A {Konstruktor () {this.message = function () {console.log ('Nachricht von A')}}} Klasse B {Konstruktor () {} Nachricht () {console.log ('Nachricht von B') } data () {console.log ('Daten von B')}} obj = Reflect.construct (A, [], B) console.log (obj.message ()); // Nachricht von A console.log (obj.data ()); // Daten von B console.log (obj instanceof B) // true 

Durch die Übergabe von B als drittem Argument an Reflect.construct() wird der Prototypwert des obj Objekts als der Prototyp von B Konstruktor (mit den Eigenschaften message und data ) erstellt.

Somit kann obj auf die message und die data zugreifen, die an ihrem Prototyp verfügbar sind. Aber da obj mit A, hat es auch seine eigene message es von A .

Obwohl obj als ein Array obj ist, ist es keine Instanz von Array, da sein Prototyp auf Object .

 obj = Reflect.construct (Array, [1, 2, 3], Objekt) console.log (obj) // Array [1, 2, 3] console.log (obj instanceof Array) // false 

Reflect.construct() kann nützlich sein, wenn Sie ein Objekt mit mehreren Blaupausen erstellen möchten.

3. Die Object.create() -Methode

Sie können auch ein neues gewöhnliches Objekt mit einem bestimmten Prototyp über Object.create() . Auch dies mag der Verwendung des new Operators sehr ähnlich sein, ist es aber nicht.

 Object.create (O [, EigenschaftenObjekt)) 

Das O Argument ist ein Objekt, das den Prototyp für das neue Objekt bereitstellt, das erstellt wird. Das optionale propertiesObject Argument ist eine Liste von Eigenschaften, die Sie dem neuen Objekt hinzufügen möchten.

 Klasse A {constructor () {} message () {console.log ('Nachricht von A')}} var obj = Object.create (neu A (), {data: {writable: true, konfigurierbar: true, value: function () {return 'data from obj'}}} console.log (obj.message ()) // Nachricht von A console.log (obj.data ()) // Daten von obj obj1 = Object.create ( new A (), {foo: {beschreibbar: true, konfigurierbar: true, value: function () {return 'foo von obj1'}}} console.log (obj1.message ()) // Nachricht von Eine Konsole. log (obj1.foo ()) // foo von obj1 

Im obj Objekt ist die hinzugefügte Eigenschaft data, während es in obj1 foo . Wie Sie sehen, können Eigenschaften und Methoden zu einem neuen Objekt hinzugefügt werden .

Dies ist ideal, wenn Sie mehrere Objekte der gleichen Art, aber mit verschiedenen zusätzlichen Eigenschaften oder Methoden erstellen möchten. Die Object.create() erspart das Object.create() sie alle separat zu codieren.

Wie man ein Verfasser wird - Tipps und Ressourcen

Wie man ein Verfasser wird - Tipps und Ressourcen

Ich war vorher Teil einer Gruppe von freiberuflichen Autoren, die davon überzeugt waren, dass sie etwas Besonderes waren. In der Gruppe sind Content-Autoren wie ich, die vom Schreiben leben, und auch Leute, die schon immer schreiben wollten, aber nie wirklich die Chance hatten zu lernen. Eines dieser Mitglieder (von letzterem) machte den Fehler, die Gruppe zu fragen, was es braucht, um zu lernen, wie man seinen Lebensunterhalt als freiberuflicher Schriftsteller verdienen kann, ohne zur Universität zu gehen .E

(Tech- und Design-Tipps)

WhatsApp startet 3 neue Funktionen - Alben, Filter und Antworten Shortcuts

WhatsApp startet 3 neue Funktionen - Alben, Filter und Antworten Shortcuts

Wenn Sie ein iOS-WhatsApp-Benutzer sind, sollten Sie die App nach einem neuen Update durchsuchen, da die Chat-Anwendung drei neue Funktionen erhalten hat und zwei davon um Fotos herum gruppiert sind . Neue Filter Die erste neue Funktion, die zu WhatsApp kommen wird, sind "Filter" - etwas, das bis jetzt in der App überraschend fehlte.

(Tech- und Design-Tipps)