Ich möchte ein Objekt, um einen Wert in einem numerischen Kontext und eine vollständig andere in einem Zeichenfolgekontext zurückzugeben. Folgendes funktioniert nicht.Make toPrimitive Konvertierung hängt vom Kontext ab
foo = {
toString: function() { return "string" },
valueOf: function() { return 123 }
}
console.log(foo * 2) // got 246, fine
console.log("hi " + foo) // got "hi 123", want "hi string"
große Frage! – Alnitak
eigentlich die Antworten auf die andere Frage ziemlich beides _why_ erklären, und auch, warum es keine _how_. die einzigen Arbeitsarounds zu sein scheinen zu schreiben 'console.log ("hi" + String (foo)) 'oder benutzen' foo.toString() ' – Alnitak
Werfen Sie einen Blick auf [diese Frage auch] (http://stackoverflow.com/questions/14330084/javascript-variable-and-the-same-variable-also-be-an-object). In Bezug auf die Objektverweise verhält es sich ähnlich wie bei bestimmten Typen. –