Der Inhalt dieses Artikels soll Ihnen ein tiefgreifendes Verständnis der js-Verpackungsklasse vermitteln. Er hat einen gewissen Referenzwert.
Lesen wir es, bevor wir über die Verpackungsklasse sprechen. Wie lautet die Antwort auf das folgende Beispiel
var str = 'hello'; str.name = 'world'; console.log(str.name);
?
Ist das nicht offensichtlich? Die obige Zeichenfolge hat ein Attribut namens „name“ hinzugefügt und der Wert ist „world“. Die Ausgabe muss „world“ sein.
Ich denke, wenn man diesen Code sieht, ist das das Erste, was einem in den Sinn kommt!
Herzlichen Glückwunsch, Sie haben die Antwort falsch verstanden!
Wir wissen, dass in js mit Ausnahme der Originalwerte alles andere ein Objekt ist und Objekte ihre eigenen Eigenschaften und Methoden haben können. (Methode ist, wenn das Attribut eine Funktion ist, wir nennen es eine Methode)
Hat der ursprüngliche Wert also seine eigenen Attribute?
var str = 'hello'; console.log(str.length) // 6
Wir können die String-Längenmethode genauso aufrufen ein Array, dessen Nummer wird ausgedruckt.
Da String kein Objekt ist, warum hat er dann seine eigenen Methoden?
Dies liegt daran, dass js, solange wir das str-Attribut verwenden, new String(str) aufruft, um str in ein Objekt einzubinden. Dieses Objekt erbt die oben genannten Methoden.
Dies sind alles String-Methoden.
Aber was ist, wenn String nicht das gewünschte Attribut hat?
Dann erstellt js ein Attribut für String, aber nach der Erstellung wird es sofort zerstört.
Sehen wir uns dieses Beispiel noch einmal an
var str = 'hello'; str.name = 'world'; /* 上面这一步str给他自己设置一个名为name,值为world的属性,于是js就new String(str).name = 'world'; 创建之后,销毁 */ console.log(str.name) /* 这一步 js又new String(str).name 但是没有值, 所以值为undefined, */
Ähnlich Zahl und boolean ist auch
Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis der js-Wrapper-Klassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!