Heim > Artikel > Web-Frontend > Detaillierte Erläuterung der Verwendung von JavaScript-Wrapper-Objekten_Javascript-Fähigkeiten
Ein JavaScript-Objekt ist ein zusammengesetzter Wert: Es ist eine Sammlung von Eigenschaften und benannten Werten. Attributwerte werden durch das Symbol „.“ referenziert. Wenn der Eigenschaftswert eine Funktion ist, wird er als Methode bezeichnet.
①Ein Codestück, das Sie häufig verwenden, dessen wahres Grundprinzip Sie jedoch möglicherweise nicht verstehen:
var s = "hello world!"; var word = s.substring(s.indexOf(" ")+1,s.length);
Wie bereits erwähnt, ist die Variable s hier nur ein primitiver Stringtyp. Wie kann sie Attribute (s.length) und Methoden (s.indexOf(), s.substring()) haben? Ja, das hängt mit dem Verpackungsobjekt zusammen, das wir vorstellen werden. Der Grund dafür ist: Solange auf die Eigenschaften von Strings verwiesen wird, wandelt JavaScript den String-Wert in ein Objekt um, indem es neue String(s) aufruft. Dieses Objekt erbt die Methoden des String-Objekts und wird zur Verarbeitung verwendet zur Immobilie. Sobald die Eigenschaftsreferenz endet, wird das neu erstellte Objekt zerstört.
Wie Zeichenfolgen haben auch Zahlen und boolesche Werte ihre eigenen Methoden: Erstellen Sie ein temporäres Objekt über die Konstruktoren Number() und Boolean(). Ein temporäres Objekt, das beim Zugriff auf eine Zeichenfolge, eine Zahl oder eine boolesche Eigenschaft erstellt wird, ist ein Wrapper-Objekt. Die verbleibenden zwei der fünf primitiven Typen, null und undefiniert, haben keine Wrapping-Objekte: Der Zugriff auf ihre Eigenschaften führt zu einem Uncaught TypeError. Nachdem Sie den obigen Code verstanden haben, sehen Sie sich den folgenden Code an:
var s = "test"; s.len = 4;//给它设置一个属性 var t = s.len;
Schüler, die es hier nicht ernst meinen, werden denken, dass das endgültige t gleich 4 ist. Ist t am Ende nicht gleich 4? Ja, der Wert von t am Ende ist undefiniert. Wenn Sie wissen möchten, warum, lesen Sie bitte die Analyse weiter: Es stellt sich heraus, dass die zweite Codezeile hier lediglich ein temporäres String-Objekt erstellt, dem len-Attribut den Wert 4 zuweist und das Objekt dann zerstört. Die dritte Zeile erstellt ein neues Zeichenfolgenobjekt über die ursprüngliche Zeichenfolge s (dies ist nicht das durch die zweite Codezeile erstellte Objekt, das durch die zweite Codezeile erstellte Objekt wurde zerstört) und versucht, sein len-Attribut, dieses Attribut, zu lesen Existiert natürlich nicht, daher ist das Ergebnis des Ausdrucks undefiniert. Dieser Code veranschaulicht, dass sich Eigenschaftswerte oder Methoden, die Zeichenfolgen, Zahlen und boolesche Werte lesen (eigentlich die entsprechenden Eigenschaftswerte oder Methoden des umschlossenen Objekts), wie Objekte verhalten. Wenn Sie jedoch versuchen, der Eigenschaft einen Wert zuzuweisen, wird dieser Vorgang ignoriert: Die Änderung erfolgt nur für das temporäre Objekt und das temporäre Objekt wird nicht beibehalten.
Hinweis: Sie können Wrapper-Objekte explizit über die Konstruktoren String(), Number() und Boolean() erstellen:
var s = "test",n=1,b=true;//一个字符串、数字和布尔值 var S = new String(s);//一个字符串对象 var N = new Number(n);//一个数值对象 var B = new Boolean(b);//一个布尔对象
JavaScript konvertiert umschlossene Objekte bei Bedarf in primitive Werte, sodass sich die Objekte S, N und B im obigen Code oft, aber nicht immer, genauso verhalten wie die Werte s, n und B. Der Gleichheitsoperator „==“ behandelt den ursprünglichen Wert und sein umschlossenes Objekt als gleich, der Gleichheitsoperator „===“ behandelt sie jedoch als ungleich. Sie können den Unterschied zwischen dem ursprünglichen Wert und dem umschlossenen Objekt auch anhand des Operators „typeof“ erkennen:
①typeof(s); ->"string" typeof(S); ->"object" ②typeof(n); ->"string" typeof(N); ->"object" ③typeof(b); ->"string" typeof(B); ->"object"
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.