Einführung
Wir alle wissen, dass JavaScript -Datentypen in zwei Kategorien unterteilt sind: Grundtypen (oder primitive Typen) und Referenztypen.
Werte grundlegender Typen sind einfache Datensegmente von Daten, die im Stapelspeicher gespeichert sind, und werden von Wert zugegriffen. In JS gibt es fünf Grundtypen: Undefined, Null, Boolean, Anzahl und String.
Ein Referenztypwert ist ein im Heap -Speicher gespeicherter Objekt, und auf seinen Wert wird durch Referenz zugegriffen. Die Referenztypen sind hauptsächlich Objekt, Array, Funktion, Regexp und Datum.
Objekte haben Eigenschaften und Methoden, daher ist es nicht überraschend, dass wir den folgenden Code sehen.
var favs = ['Ei', 'Lotus Pot']; favs.push ('Okra'); console.log (favs); // ["Ei", "Lotus Pot", "Okra"] console.log (favs.Length); // 3Array ist ein Referenztyp, sodass es natürlich Attribute (Länge) und Methoden (Push) aufweisen kann, die natürlich wie das Essen von Eiscreme im Sommer sind. Aber schauen Sie sich den folgenden Code an und denken Sie sorgfältig darüber nach. Ist dies, dies, legal?
var realMessage = "sagte, ich liebe dich, aber ich habe gelogen"; var myMessage = RealMessage.substring (5,15); console.log (MyMessage); //"Ich liebe dich"
Es gibt ein Mädchen mit gebrochenem Herzen, das die "Substring" -Methode durchführt, die die "Substring" -Methode auf einer Schnur zum Aufbrechen ausführt, und dann den Schnitt glücklich ansehen und einschlafen. Aber nicht gesagt, dass String ein Grundtyp ist? Warum kann es Methoden haben? ? Gibt es ein anderes, Königsrecht, Meister Qingtian!
All dies liegt an etwas, das als "grundlegender Verpackungstyp" bezeichnet wird. Dieser grundlegende Verpackungstyp ist besonders ehrlich und es ist die echte "Rückkehr der Kleidung nach der Angelegenheit, die Verdienste und Ruhm versteckt"!
Grundverpackungstyp
Zusätzlich zu den zu Beginn erwähnten Referenztypen wie Objekt und Array bietet JavaScript auch drei spezielle Referenztypen: String, Nummer und Boolesche, was uns erleichtert, die entsprechenden Grundtypen zu betreiben.
Sehen Sie sich das obige Beispiel für Schnittschnüre weiter an. Haben Sie bemerkt, dass sich der Wert von RealMessage trotz der Verwendung der Substring -Methode nicht ändert. Das Aufrufen dieser Methode gibt nur eine neue Zeichenfolge zurück.
Dies ist, was der grundlegende Verpackungstyp tut. Ursprünglich haben Sie keine Methode, aber wenn Sie sie verwenden möchten, können Sie sie einfach anpassen und der entsprechende grundlegende Verpackungstyp hat diese Methode. Zum Beispiel ist die obige Substring -Methode, dass die Grundtyp von String diese Methode unmöglich ist, aber die Verpackungsstreichtyp hat sie nach der Ausführung dieser Methode flüstert und gibt das Ergebnis zurück. Bei Ausführung an:
Viele Dinge geschah, als RealMessage.Substring (5,15) diese Codezeile.
Erstens wird der Wert von RealMessage aus dem Speicher gelesen. In diesem Lesemodus beginnt der Hintergrund zu funktionieren. Die JS -Höhe beschreibt diese im Hintergrund wie folgt ausgeführten Aktionen:
1. Erstellen Sie eine Instanz des String -Typs;
2. Rufen Sie die angegebene Methode auf der Instanz auf;
3. Zerstöre diese Instanz
Das obige Beispiel kann im Code wie folgt erklärt werden:
var _realMessage = new String ("sagte, ich liebe dich, aber ich habe gelogen"); var myMessage = _realMessage.substring (5,15); _ RealMessgae = null; // zerstören, nachdem die Methode aufgerufen wurdeAuf diese Weise verstehen wir also, dass die Grundtyp -String nicht seine eigene Methode ausführt, aber der Hintergrund erstellt eine entsprechende Zeichenfolge für die grundlegende Wrapper -Typ dafür. Es instanziiert eine Instanz, die auf dem Wert des Grundtyps basiert und diese Instanz die angegebene Methode aufruft und sich schließlich sich selbst zerstört, die sich bewegt.
Achten Sie auf die Funktion "Zerstören" des letzten Schritts des grundlegenden Wrapper -Typs, der feststellt, dass wir den Grundtypwerten keine benutzerdefinierten Eigenschaften und Methoden hinzufügen können.
var me = "sunjing"; me.age = 18; console.log (me.age); // undefiniert
Ich habe das Altersattribut zur String "Ich" hinzugefügt, und der Wert wird für schön 18 Jahre alt. Als ich jedoch wieder zugegriffen habe, war dieses Attribut verschwunden. Das liegt daran, dass:
Wenn die zweite Zeile der Code -Attributzuweisung ausgeführt wird, wird im Hintergrund eine Instanz des grundlegenden Wrapper -Typs erstellt. Dieses Altersattribut wird tatsächlich an der Instanz aufgehängt, aber unmittelbar danach wird die Instanz zerstört. Bei der Ausführung in die dritte Zeile wird eine neue Instanz des grundlegenden Wrapper -Typs nachgebaut, und natürlich gibt es kein Altersattribut.
Zeigen Sie den einfachen Verpackungstyp
Zusätzlich zum String im Lesemodus hilft uns der Hintergrund, die Grundinstanz der grundlegenden Wrapper -Typ zu erstellen, die wir auch anzeigen können.
var str = new String ("Hallo"); var str2 = str.ToUppercase (); console.log (str2); // "Hallo:Dies unterscheidet sich von dem, was in der Variablen gespeichert wird, wenn der Hintergrund uns hilft, zu erstellen.
var str1 = new String ("Hallo"); var str2 = "Hallo"; typeof str1 // "Objekt" typof str2 // "String"Zusammenfassen
Dank des grundlegenden Verpackungstyps ist es für uns bequemer, die drei grundlegenden Arten von String, Boolean und Nummer zu betreiben. Immer wenn diese drei Grundtypwerte gelesen werden, erstellt der Hintergrund die entsprechende Wrapper -Typinstanz. Diese Instanz nennt die angegebene Methode und wird nach dem Anruf zerstört. Dieser kurze Lebenszyklus bestimmt, dass wir den primitiven Typen keine benutzerdefinierten Eigenschaften und Methoden hinzufügen können.
Der obige Artikel hat ein tiefes Verständnis dafür, warum Strings im Besitz von JavaScript sein können. Dies ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, es kann Ihnen eine Referenz geben und ich hoffe, Sie können Wulin.com mehr unterstützen.