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 besseres CSS mit Leistung im Verstand schreibt

Wie man besseres CSS mit Leistung im Verstand schreibt

In der heutigen Post werden wir uns Gedanken über die Code-Optionen machen, die wir in CSS für eine verbesserte Website-Leistung treffen können. Bevor wir jedoch auf diese Möglichkeiten eingehen, wollen wir zunächst einen kurzen Blick auf den Workflow der Webseitenwiedergabe werfen, um uns auf das Thema zu konzentrieren problematische (performance) Bereiche, die über CSS lösbar sind. Hier

(Tech- und Design-Tipps)

Interaktive Verpackung: 15 clevere Beispiele, die Sie auschecken sollten

Interaktive Verpackung: 15 clevere Beispiele, die Sie auschecken sollten

Unsere Verpackungsauswahl wird ständig weiterentwickelt. Heute herrscht jedoch mehr Kreativität als je zuvor . Die Menschen verlangen etwas anderes, entweder durch Aktivität, einzigartige Aussagen oder Humor.Hier kommt interaktive Verpackungen ins Spiel. Interaktive Verpackungen sind nicht nur im visuellen Bereich gut gestaltet, sondern dienen auch einem Zweck wie Unterhaltung oder Funktionalität . Wi

(Tech- und Design-Tipps)