En Javascript, chaque objet a une valueOf() et la méthode toString (). J'aurais pensé que la méthode toString() a obtenu invoqué chaque fois qu'une chaîne de conversion est nécessaire, mais apparemment, il est éclipsé par valueOf().
Par exemple, le code
var x = {toString: function() {return "foo"; },
valueOf: function() {return 42; }};
window.console.log ("x="+x);
window.console.log ("x="+x.toString());
imprime
x=42
x=foo
Ce qui me frappe comme en arrière .. si x est un nombre complexe, par exemple, je voudrais valueOf() pour me donner son ampleur (de sorte que le zéro deviendrait spécial), mais à chaque fois que j'ai voulu convertir une chaîne que je ne veux quelque chose comme "a+bi". Et je ne voudrais pas avoir à appeler toString() explicitement dans des contextes qui implique une chaîne de caractères.
Est-ce juste la façon dont il est?