Heim  >  Artikel  >  Web-Frontend  >  Sind JavaScript-Primitive wirklich Objekte?

Sind JavaScript-Primitive wirklich Objekte?

Barbara Streisand
Barbara StreisandOriginal
2024-11-15 00:08:02271Durchsuche

Are JavaScript Primitives Truly Objects?

Die faszinierende Natur von JavaScript-Objekten

In den Tiefen der Programmierung präsentiert die Welt von JavaScript eine unerwartete Wendung: Nicht alles ist ein Objekt . Während viele einführende Texte andeuten, dass „fast alles“ unter diese Klassifizierung fällt, offenbart eine genauere Betrachtung eine andere Wahrheit.

Im Kern kapselt ein Objekt Funktionalität durch Methoden und Eigenschaften. Arrays passen beispielsweise mit ihren inhärenten Schlüssel-Wert-Paaren in diese Form. Wenn es jedoch um „Strings“, „Zahlen“ und „Funktionen“ geht, verschwimmen die Grenzen.

Diese Entitäten scheinen Funktionen zu ähneln, die Transformationen an der Eingabe durchführen und eine Ausgabe liefern, ohne offensichtlichen Zugriff auf Eigenschaften oder Methoden. In solchen Fällen fehlt die Punktnotation auffällig.

Das Wrapper-Rätsel

Wir lüften das Geheimnis und decken einen subtilen Unterschied auf: Diesen Primitiven, wie sie genannt werden, fehlt das wahre Essenz von Objekten. Stattdessen werden sie in Objektgewänder eingewickelt, nämlich String, Number und Boolean. Diese Wrapper verfügen über Methoden und Eigenschaften, die die Illusion von Objektverhalten vermitteln.

Betrachten Sie zum Beispiel diesen Code:

var s = "foo";
var sub = s.substring(1, 2); // sub becomes "o"

Hinter den Kulissen führt JavaScript eine Reihe versteckter Schritte aus:

  1. Erstellt ein String-Wrapper-Objekt für s und wendet effektiv neue String(s) an.
  2. Führt die substring()-Methode auf dem Wrapper-Objekt mit den angegebenen Parametern aus.
  3. Verwirft das String-Wrapper-Objekt.
  4. Gibt die resultierende Zeichenfolge (primitiv) aus Schritt 2 zurück.

Die Illusion von Eigenschaften

Während es Wenn es den Anschein hat, dass Primitiven Eigenschaften zugewiesen werden können, erweisen sich solche Versuche als erfolglos, wie das folgende Beispiel zeigt:

var s = "foo";
s.bar = "cheese";
alert(s.bar); // undefined

Dies geschieht, weil die Eigenschaft auf dem kurzlebigen String-Wrapper-Objekt definiert ist, das beim Rendern sofort verworfen wird auf die Eigenschaft kann nicht zugegriffen werden.

Funktionen: Versteckte Objekte

Im Gegensatz zu Grundelementen sind Funktionen vollwertige Objekte, die von Object erben. Das bedeutet, dass sie alle Fähigkeiten von Objekten besitzen, einschließlich der Fähigkeit, über eigene Eigenschaften zu verfügen. Sehen Sie sich dieses Beispiel an:

function foo() {}
foo.bar = "tea";
alert(foo.bar); // tea

Zum Schluss

In JavaScript trägt nicht alles die Hülle eines Objekts. Durch Objekthüllen getarnte Grundelemente erzeugen eine Illusion des Objektverhaltens. Erst durch ein tieferes Verständnis der Feinheiten von JavaScript wird die wahre Natur seiner Objekte deutlich.

Das obige ist der detaillierte Inhalt vonSind JavaScript-Primitive wirklich Objekte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn