In Javascript ogni oggetto ha un metodo valueOf() e toString(). Avrei pensato che il metodo toString() è stato richiamato ogni volta che viene richiesta una conversione di stringhe, ma a quanto pare viene trumpato da valueOf().valueOf() vs. toString() in Javascript
Ad esempio, il codice
var x = {toString: function() {return "foo"; },
valueOf: function() {return 42; }};
window.console.log ("x="+x);
window.console.log ("x="+x.toString());
stamperà
x=42
x=foo
Questo mi colpisce come all'indietro .. se x fosse un numero complesso, per esempio, vorrei valueOf() per dare me la sua grandezza, ma ogni volta che volevo convertire in una stringa vorrei qualcosa come "a + bi". E non vorrei dover chiamare toString() esplicitamente in contesti che implicavano una stringa.
È così?
Avete provato 'window.console.log (x);' o 'alert (x);'? – Li0liQ
Essi danno rispettivamente "Object" e "foo". Cose divertenti. – brainjam
In realtà, avviso (x); dà "pippo" e window.console.log (x); fornisce "foo {}" in Firebug e l'intero oggetto nella console di Chrome. – brainjam