Maison > Article > interface Web > La méthode JavaScript toString() convertit un objet Date en chaîne et renvoie le résultat
La méthode
Définition et utilisation
toString() peut convertir un objet Date en une chaîne et renvoyer le résultat.
Syntaxe
dateObject.toString()
Valeur de retour
La représentation sous forme de chaîne de dateObject, en utilisant la représentation de l'heure locale.
Exemple
Dans cet exemple, nous allons convertir la date du jour en chaîne :
<script type="text/javascript"> var d = new Date() document.write (d.toString()) </script>
Sortie :
Wed Nov 08 2017 11:20:25 GMT+0800 (中国标准时间)
Comment utiliser toString( ) pour convertir la date du jour en chaîne.
<script type="text/javascript"> var d = new Date() document.write (d.toString()) </script>
Résultat :
Wed Nov 08 2017 11:21:32 GMT+0800 (中国标准时间)
La méthode toString() de JavaScript
la méthode toString() peut convertir une valeur logique en chaîne et renvoyer le résultat.
Utilisez booleanObject.toString(), la valeur de retour est la chaîne "true" ou "false" basée sur la valeur booléenne d'origine ou la valeur de l'objet booleanObject. Si l'objet sur lequel cette méthode est appelée n'est pas un Booléen, lève une exception TypeError.
Cette méthode sera 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 chaîne :
<script type="text/javascript"> var boo = new Boolean(true); document.write(boo.toString()); </script>
Sortie du script :
true。
Regardons d'abord un exemple :
var aaa = { i: 10, valueOf: function() { return this.i+30; }, toString: function() { return this.valueOf()+10; } } alert(aaa > 20); // true alert(+aaa); // 40 alert(aaa); // 50
La raison pour laquelle ils ont ce résultat est qu'ils appellent secrètement la méthode valueOf ou toString. Mais comment distinguer quelle méthode est appelée dans quelles circonstances ? Nous pouvons la tester via une autre méthode. Puisque console.log est utilisé, veuillez expérimenter dans 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 toString alert(+bbb); // 10 valueOf alert(''+bbb); // 10 valueOf alert(String(bbb)); // 10 toString alert(Number(bbb)); // 10 valueOf alert(bbb == '10'); // true valueOf alert(bbb === '10'); // false
À première vue, il semble que la méthode toString soit appelée lors de la conversion en chaîne, et la méthode valueOf soit appelée lors de la conversion en valeur numérique. Cependant, deux d'entre elles sont très discordantes. L'un est alert(''+bbb), et la concaténation de chaînes devrait appeler la méthode toString... L'autre que nous pouvons temporairement comprendre est que l' ===opérateur n'effectue pas de conversion implicite, donc ils sont pas appelé. Pour découvrir 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 toString alert(+aa); // 10 toString alert(''+aa); // 10 toString alert(String(aa)); // 10 toString alert(Number(aa)); // 10 toString alert(aa == '10'); // true toString 再看valueOf。 var bb = { i: 10, valueOf: function() { console.log('valueOf'); return this.i; } } alert(bb);// [object Object] alert(+bb); // 10 valueOf alert(''+bb); // 10 valueOf alert(String(bb)); // [object Object] alert(Number(bb)); // 10 valueOf alert(bb == '10'); // true valueOf 发现有点不同吧?!它没有像上面toString那样统一规整。对于那个[object Object],我估计是从Object那里继承过来的,我们再去掉它看看。 Object.prototype.toString = null; var cc = { i: 10, valueOf: function() { console.log('valueOf'); return this.i; } } alert(cc);// 10 valueOf alert(+cc); // 10 valueOf alert(''+cc); // 10 valueOf alert(String(cc)); // 10 valueOf alert(Number(cc)); // 10 valueOf alert(cc == '10'); // true valueOf
Si seulement toString est réécrit, l'objet sera converti quelle que soit l'existence de valueOf. Cependant, si seule la méthode valueOf est substituée, la méthode valueOf aura la priorité lors de la conversion en chaîne. Lorsque toString ne peut pas être appelé, valueOf ne peut être utilisé. Concernant l'étrange problème d'épissage de chaînes, cela peut être dû à l'opérateur. J'ai ouvert ECMA262-5 et j'ai découvert qu'il existe une opération getValue. Eh bien, alors le mystère devrait être résolu. La réécriture augmentera l'optimisation de leurs appels, et dans le cas des opérateurs, la priorité de valueOf est intrinsèquement supérieure à celle de toString.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!