In JavaScript ist es möglich, mit Primitiven (Zahlen, Strings und mehr), als wären sie Objekte zu arbeiten.
Aber natürlich gibt es bemerkenswerte Unterschiede zwischen Objekten und Primitiven.
Ein Primitive ist also ein primitiver Wert. Es gibt sieben Typen von Primitiven, darunter: Zahl, BigInt, Symbol, String, Boolesch, Null und Undefiniert. Ein Objekt kann mehrere Werte als Eigenschaften speichern. Sie können ein Objekt mit {} erstellen. Zum Beispiel:
{
name: "Chevrolet",
model: "Camaro",
price: 40000
}
In JavaScript gibt es auch andere Arten von Objekten. Funktionen werden zum Beispiel auch als Objekte betrachtet.
Einer der bedeutendsten Vorteile von Objekten ist, dass eine Funktion als eine seiner Eigenschaften gespeichert werden kann.
Zum Beispiel:
Es gibt auch viele eingebaute Objekte. Zum Beispiel solche, die mit Fehlern, Daten, HTML-Elementen und mehr arbeiten. Sie enthalten verschiedene Methoden und Eigenschaften.
Aber beachten Sie, dass Objekte zusätzliche Ressourcen für die Unterstützung der internen Struktur benötigen.
Ein Primitives als ein Objekt
Unten wird das Paradoxon von JavaScript beschrieben:
- Man möchte viele Dinge mit Primitiven wie Strings und Zahlen machen. Der Zugriff auf sie als Methoden wäre großartig.
- Primitives müssen sowohl leichtgewichtig als auch schnell sein.
Und hier ist die Lösung, die ein wenig umständlich erscheinen mag:
- Primitives bleiben primitives. Ein Wert, wie erwünscht.
- In der Sprache können Sie auf die Eigenschaften und Methoden von Strings, Symbolen, Booleans und Zahlen zugreifen.
- Für die Erzwingung dieser Arbeit wird ein einzigartiger “Objekt-Wrapper” generiert, der zusätzliche Funktionalität bietet, und dann wieder zerstört.
Jeder Typ eines Primitiven hat seinen eigenen “Objekt-Wrapper” genannt: Number, Boolean, String, Symbol. Sie bieten verschiedene Methodensätze. Zum Beispiel gibt es die String-Methode str.toUpperCase(), die einen kapitalisierten str zurückgibt.
Es funktioniert auf diese Weise:
Jetzt sehen wir, was bei str.toUpperCase() passiert:
- str ist ein Primitive. Ein einzigartiges Objekt wird im Moment des Zugriffs auf seine Eigenschaft erstellt. Dieses Objekt kennt den String-Wert und hat hilfreiche Methoden, wie toUpperCase().
- Diese Methode kann ausgeführt werden und gibt einen vollständig neuen String zurück (wie durch console.log angezeigt).
- Das spezielle Objekt wird zerstört und das Primitive str bleibt alleine.
Wir können annehmen, dass Primitives Methoden bereitstellen, aber gleichzeitig leichtgewichtig bleiben.
Es ist wichtig zu beachten, dass JavaScript diesen Prozess erheblich verbessert. Darüber hinaus kann die Erstellung eines zusätzlichen Objekts übersprungen werden. Es sollte sich trotzdem so verhalten, als würde es eines erstellen.
Eine Zahl hat ihre Methoden. Werfen wir einen Blick auf dieses Beispiel:
Hier rundet toFixed(n) die Zahl auf eine bestimmte Präzision.
Zum Beispiel:
Beachten Sie, dass Sie die Konstruktoren String/Number/Boolean nur intern verwenden können.
Wie einige andere Sprachen, wie Java, besteht die Möglichkeit, “Wrapper-Objekte” für Primitives mit der folgenden Syntax zu erstellen:
new Number(1);
or
new Boolean(false);
Theoretisch ist das auch in JavaScript möglich, aber wir empfehlen nicht, dies zu tun. Es könnte unerwünschte Ergebnisse bringen. Zum Beispiel:
In if sind Objekte immer wahr. Hier wird der Alert Folgendes anzeigen:
Eine weitere nützliche Funktion ist die Verwendung der gleichen Funktionen String/Number/Booleanohne new. Damit kann der Wert in einen String, eine Zahl und einen Booleschen Wert umgewandelt werden.
Hier ist ein Beispiel:
Zusammenfassung
Ein Primitive hat eine Reihe praktischer Methoden (ausgenommen null und undefiniert). Diese Methoden arbeiten über temporäre Objekte. Die Engines von JavaScript sind gut eingestellt, um das intern zu erleichtern. Daher ist es nicht teuer, sie zu rufen.
Quizzeit: Testen Sie Ihre Fähigkeiten!
Sind Sie bereit, das Gelernte herauszufordern? Tauchen Sie ein in unsere interaktiven Quizze für ein tieferes Verständnis und eine unterhaltsame Art, Ihr Wissen zu festigen.