So che quando JS tenta di rappresentare un oggetto come primitivo, chiama il metodo valueOf
su un oggetto. Ma oggi ho scoperto che chiede anche toString()
metodo nella stessa situazione:Perché JS chiama il metodo `toString` quando l'oggetto viene aggiunto a un numero
var o = {};
o.toString = function() {return 1};
1+ o; // 2
Perché? Se aggiungo il metodo valueOf
, non viene chiamato il numero toString
.
Grazie per il suggerimento circa il suggerimento. È sicuramente indicato come un numero. Ho modificato la mia risposta grazie alla tua .. –
grazie, come determinare cosa è suggerimento? quali tipi di suggerimenti esistono? Il suggerimento è collegato all'operatore '+'? –
@Maximus il suggerimento è semplicemente un indizio di tipo per JS per eseguire la sua azione. Nel nostro contesto verrebbe utilizzato solo uno dei due tipi (String, Number). In JS ci sono 6 tipi (indefinito, null, stringa, numero, oggetto, booleano). nel nostro caso Sì + L'operatore fornisce un suggerimento al motore JS per agire con questo valore come numero e utilizzare il metodo valueOf() prima di toString() –