Es kann gesagt werden, dass alle JS -Datentypen die beiden Methoden haben: ValueOF und ToString, außer Null. Beide lösen die Probleme des JavaScript -Wertbetriebs und der Anzeige. Es wird in Programmen sehr weit verbreitet. Lassen Sie es Ihnen nacheinander vorstellen.
JavaScripts valueOf () -Methode
Die ValueOF () -Methode gibt den ursprünglichen Wert des Booleschen Objekts zurück.
Nutzung booleanObject.ValueOf () gibt den ursprünglichen booleschen Wert mit einem Wert von booleanObject zurück. Wenn das Objekt, das die Methode aufruft, kein Boolescher ist, wird ein Ausnahmetypeerror geworfen.
<script type = "text/javaScript"> var boo = new boolean (false); document.write (boo.valueof ()); </script>
Das obige Skript gibt false aus.
JavaScript's toString () -Methode
Die Methode toString () wandelt einen logischen Wert in eine Zeichenfolge um und gibt das Ergebnis zurück.
Verwendung booleanObject.toString (), der Rückgabewert gibt den Zeichenfolge "True" oder "False" basierend auf dem ursprünglichen Booleschen Wert oder dem Wert des BooleanObject -Objekts zurück. Wenn das Objekt, das die Methode aufruft, kein Boolescher ist, wird ein Ausnahmetypeerror geworfen.
Diese Methode wird automatisch aufgerufen, wenn ein boolescher Objekt in einer String -Umgebung verwendet wird.
Das folgende Skript erstellt ein boolescher Objekt und konvertiert es in eine Zeichenfolge:
<script type = "text/javaScript"> var boo = new boolean (true); document.write (boo.toString ()); </script>
Skriptausgabe: True.
Schauen wir uns ein Beispiel an:
var aaa = {i: 10, valueof: function () {return this.i+30; }, toString: function () {return this.ValueOf ()+10; }} alert (aaa> 20); // Truealert (+aaa); // 40Alert (AAA); // 50Dies ist das Ergebnis, weil sie heimlich die ValueOF- oder Tastring -Methoden aufrufen. Aber wie kann man unter welchen Umständen unterscheiden, welche Methode genannt wird? Wir können es durch eine andere Methode testen. Da Console.log verwendet wird, experimentieren Sie bitte in FF mit installiertem Firebug!
var bbb = {i: 10, toString: function () {console.log ('toString'); return this.i;}, valueOf: function () {console.log ('valueOf'); // 10 valueOfalert (''+bbb); // 10 valueOfalert (String (BBB)); // 10 toStringArt (Nummer (bbb)); // 10 valueOfalert (BBB == '10'); // true valueOfalert (BBB === '10'); // FALSCHAuf den ersten Blick ist das Ergebnis ungefähr das Gefühl, dass, wenn es in eine Zeichenfolge umgewandelt wird, die Wertmethode aufgerufen wird, zwei davon sehr dissonant sind. Man ist alarmiert (''+BBB), eine String -Verkettung sollte als TOString -Methode bezeichnet werden ... Ein anderer können wir vorübergehend verstehen, dass der Operator === keine implizite Konvertierung durchführt, sodass sie nicht aufgerufen werden. Um die Wahrheit zu verfolgen, brauchen wir strengere Experimente.
var aa = {i: 10, toString: function () {console.log ('toString'); // 10 toStringArt (''+aa); // 10 toStringArt (String (AA)); // 10 toStringalert (Nummer (AA)); // 10 toStringArt (aa == '10'); // echte ToostringalertSchauen Sie sich Value von erneut an.
var bb = {i: 10, valueOf: function () {console.log ('valueOf'); return this.i;}} alert (bb); // [Objektobjekt] alert (+bb); // 10 valueOfalert (''+bb); // 10 valueOfalert (String (BB)); // [Objektobjekt] Alert (Nummer (BB)); // 10 valueOfalert (bb == '10'); // wahrer WertIch fand es ein bisschen anders? ! Es ist nicht so einheitlich und regelmäßig wie das Oben. Für dieses [Objektobjekt] habe ich es wahrscheinlich aus dem Objekt geerbt, lassen Sie es entfernen und einen Blick darauf werfen.
Object.Prototype.toString = null; var cc = {i: 10, valueOf: function () {console.log ('valueOf'); // 10 valueOfalert (''+cc); // 10 valueOfalert (String (cc)); // 10 ValueOfalert (Nummer (CC)); // 10 valueOfalert (cc == '10'); // wahrer WertWenn nur noch tostring umgeschrieben wird, ignoriert die Objektumwandlung die Existenz von Wert von beim Konvertieren. Wenn jedoch nur die ValueOF -Methode neu geschrieben wird, wird die Wert -OF -Methode bei der Konvertierung in eine Zeichenfolge Priorität gegeben. Wenn Sie ToString nicht anrufen können, können Sie Wert von Value of in Bight gehen lassen. Für dieses seltsame String -Spleißproblem kann es an den Bediener zurückzuführen sein. Wenn Sie ECMA262-5 eröffnen, werden Sie feststellen, dass es einen GetValue-Betrieb gibt. Dann sollte die Antwort aufgedeckt werden. Das Umschreiben wird die Optimierung ihrer Anrufe erhöhen, und im Falle von Betreibern ist die Priorität des Wertes von bereits höher als die des Tastrings.
Das obige ist die vollständige Beschreibung der von dem Editor vorgestellten ValueOF- und ToString -Methoden in JavaScript. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!