In JavaScript sind String, Zahl und Boolesche primitive Grundtypen, dh Strings, numerische Werte und Boolesche Werte in Form von Objekten nicht vorhanden. Da diese drei primitiven Typen jedoch betrieben werden müssen, verkapuliert JavaScript diese drei Wertearten automatisch so, dass sie Eigenschaften und Methoden als Objekte haben. Wenn Sie als Beispiel String nehmen, lautet dieser Kapselungsprozess wie folgt:
1. Wenn JavaScript auf den Zugriff auf den Eigenschaft oder die Methode auf Aufrufe von Stringwerten begegnet wird, wird neuer String (String -Wert) aufgerufen, um die Zeichenfolge automatisch in ein Zeichenfolgenobjekt zu verkapulieren.
2. JavaScript greift auf die Eigenschaften oder Methoden des neu erstellten Objekts zu und gibt das entsprechende Ergebnis zurück.
3. Nach Abschluss des Zugriffs oder der Methode des Eigenschaft wird JavaScript das neu erstellte Objekt sofort zerstören.
Beispielsweise ist es bedeutungslos, Attribute an String -Objekte zu schreiben, die automatisch von JavaScript erstellt wurden, da das erstellte Objekt nach Abschluss der Schreibanweisung nicht mehr existiert:
Die Codekopie lautet wie folgt:
var s = "test";
S.Length = 9;
console.log (s.Length); // still 4
s.Newvariable = 9;
console.log (s.Newvariable); // undefiniert
console.log (s === "test"); // true
Es ist erwähnenswert, dass die S -Variable im obigen Code immer eine primitive Zeichenfolge darstellt. Das von JavaScript automatisch erstellte String -Objekt existiert während der Ausführung von S.Length- oder S.Newvariable -Operationen. Dies kann aus der letzten Codezeile im obigen Experiment überprüft werden.
Neben der automatischen Einkapselung der primitiven Werte können Entwickler auch die entsprechende Vorstellung manuell ausführen. Im Gegensatz zur automatischen Einkapselung werden die durch manuellen Einkapselung erhaltenen Objekte nicht sofort zerstört, sodass die Eigenschaften für manuell eingekapselte Objekte sinnvoll sind:
Die Codekopie lautet wie folgt:
var t = new String ("test");
T.Length = 9;
console.log (T.Length); // still 4, da Längenattribut nur gelesen wird
t.newvariable = 9;
console.log (t.newvariable); // 9
console.log (t == "test"); // true
console.log (t === "test"); // false