En Javascript, chaque objet a une méthode valueOf() et toString(). J'aurais pensé que la méthode toString() est invoquée chaque fois qu'une conversion de chaîne est appelée, mais apparemment elle est tronquée par valueOf().valueOf() vs toString() en Javascript
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());
imprimera
x=42
x=foo
Cela me semble en arrière .. si x était un nombre complexe, par exemple, je veux valueOf() pour donner moi sa grandeur, mais chaque fois que je voulais convertir en une chaîne je voudrais quelque chose comme "a + bi". Et je ne voudrais pas avoir à appeler toString() explicitement dans les contextes qui impliquent une chaîne.
Est-ce juste comme ça?
Avez-vous essayé 'window.console.log (x);' ou 'alert (x);'? – Li0liQ
Ils donnent respectivement "Object" et "foo". Truc amusant. – brainjam
En fait, alerte (x); donne "foo", et window.console.log (x); donne "foo {}" dans Firebug et l'ensemble de l'objet dans la console Chrome. – brainjam