On peut dire que tous les types de données JS ont les deux méthodes: Valeurof et Tostring, sauf null. Ils résolvent tous deux les problèmes de l'opération de valeur JavaScript et de l'affichage. Il est très largement utilisé dans les programmes. Voyons-le un par un.
Méthode de valeur de JavaScript ()
La méthode de valeur de () renvoie la valeur d'origine de l'objet booléen.
Utilisation booleanobject.valueof (), renvoie la valeur booléenne d'origine avec une valeur de booleanObject. Si l'objet appelant la méthode n'est pas un booléen, une exception TypeError est lancée.
<script type = "text / javascript"> var boo = new boolean (false); document.write (boo.valueof ()); </script>
Le script ci-dessus sortira faux.
Méthode JavaScript de ToString ()
La méthode toString () convertit une valeur logique en une chaîne et renvoie le résultat.
Usage booleanobject.toString (), la valeur de retour renvoie la chaîne "true" ou "false" en fonction de la valeur booléenne d'origine ou de la valeur de l'objet booleanobject. Si l'objet appelant la méthode n'est pas un booléen, une exception TypeError est lancée.
Cette méthode est automatiquement appelée lorsqu'un objet booléen est utilisé dans un environnement de chaîne.
Le script suivant créera un objet booléen et le convertira en une chaîne:
<script type = "text / javascript"> var boo = new boolean (true); document.write (boo.toString ()); </script>
Sortie du script: vrai.
Jetons un coup d'œil à un exemple:
var aaa = {i: 10, valeurof: function () {return this.i + 30; }, toString: function () {return this.valueof () + 10; }} alert (aaa> 20); // trueAlert (+ aaa); // 40Alert (AAA); // 50C'est le résultat car ils appellent secrètement la valeur des méthodes de tostring. Mais comment distinguer dans quelles circonstances quelle méthode est appelée? Nous pouvons le tester à travers une autre méthode. Étant donné que Console.log est utilisé, veuillez expérimenter en FF avec Firebug installé!
var bbb = {i: 10, toString: function () {console.log ('toString'); return this.i;}, valueof: function () {console.log ('valueof'); return this.i;}} alert (bbb); // 10 toStRingAlert (+ bbb); // 10 ValueOfAlert ('' + BBB); // 10 ValueOfAlert (String (BBB)); // 10 TOSTRINGALERT (nombre (BBB)); // 10 ValueOfAlert (BBB == '10'); // Vrai ValueOfAlert (BBB === '10'); // FAUXÀ première vue, le résultat est à peu près le sentiment est que s'il est converti en chaîne, la valeur de la méthode est appelée, mais deux d'entre elles sont très dissonantes. L'un est alert ('' + bbb), la concaténation des chaînes doit être appelée méthode TOSTRING ... Un autre, nous pouvons temporairement comprendre que l'opérateur === ne fait pas de conversion implicite, donc ils ne sont pas appelés. Afin de poursuivre la vérité, nous avons besoin d'expériences plus rigoureuses.
var aa = {i: 10, toString: function () {console.log ('toString'); return this.i;}} alert (aa); // 10 toStringAlert (+ aa); // 10 toStringAlert ('' + aa); // 10 TOSTRINGALERT (String (aa)); // 10 TOSTRINGALERT (nombre (aa)); // 10 toStringAlert (aa == '10'); // VRAI TOSTRINGALERTRegardez à nouveau la valeur.
var bb = {i: 10, valeurof: function () {console.log ('valueof'); return this.i;}} alert (bb); // [objet objet] alert (+ bb); // 10 ValueOfAlert ('' + bb); // 10 ValueOfAlert (String (BB)); // [objet objet] alert (nombre (bb)); // 10 ValueOfAlert (bb == '10'); // vraie valeur deJe l'ai trouvé un peu différent? ! Il n'est pas aussi uniforme et régulier que le tostring ci-dessus. Pour cet [objet objet], je l'ai probablement hérité de l'objet, le supprimons et jetons un coup d'œil.
Object.prototype.toString = null; var cc = {i: 10, valueof: function () {console.log ('valueof'); return this.i;}} alert (cc); // 10 valeurofAlert (+ cc); // 10 ValueOfAlert ('' + cc); // 10 ValueOfAlert (String (CC)); // 10 ValueOfAlert (nombre (CC)); // 10 valeurofalet (cc == '10'); // vraie valeur deSi seul le TOSTRING est réécrit, la conversion d'objet ignorera l'existence de la valeur de la conversion. Cependant, si seule la valeur de la méthode est réécrite, la méthode de valeur de la valeur sera prioritaire lors de la conversion en une chaîne. Si vous ne pouvez pas appeler ToString, vous ne pouvez laisser la valeur de la bataille. Pour cet étrange problème d'épissage de chaîne, cela peut être dû à l'opérateur. Lorsque vous ouvrez ECMA262-5, vous constaterez qu'il y a une opération GetValue. Eh bien, la réponse doit être révélée. La réécriture augmentera l'optimisation de leurs appels, et dans le cas des opérateurs, la priorité de la valeur de la valeur est déjà supérieure à celle de Tostring.
Ce qui précède est la description complète de la valeur de la valeur et des méthodes de tostring dans JavaScript qui vous est présentée par l'éditeur. J'espère que cela vous sera utile. Si vous avez des questions, veuillez me laisser un message et l'éditeur vous répondra à temps. Merci beaucoup pour votre soutien au site Web Wulin.com!