È possibile manipolare il modo in cui vengono Booleans stringata?Manipolare in stringa di booleani
Modifica Boolean.prototype.toString
non sembra aiutare.
Ecco il mio test all'interno mozrepl e FF3.
repl> Boolean.prototype.toString=function(){return this==true ? "1" : ""}
function() {…}
repl> a.toString()
""
repl> a=true
true
repl> a.toString()
"1"
repl> a+""
"true"
repl> a=false
false
repl> a+""
"false"
La mia comprensione della specifica ECMA è che +
dovrebbe chiamare toString()
.
UPDATE:
OK ho trovato la risposta!
Quando ECMA parla di ToString()
non significa il metodo JS toString()
.
Questi operatori non fanno parte della lingua; sono qui definiti per aiutare la specifica della semantica della lingua.
vedere http://bclary.com/2004/11/07/#a-9
Grazie per l'aiuto finora.
non sembra essere possibile ... :(
Huh: funziona con 'Array', tuttavia: http://jsfiddle.net/nrabinowitz/ySEx6/1/ – nrabinowitz
Anche se' a + "" 'è stato delegato a' Boolean.prototype' per coerenza con 'new Boolean (a) + "" ', risulterebbe in una chiamata a' Boolean.prototype.valueOf', non 'Boolean.prototype.toString'. –
@nrabinowitz, 'Array's sono oggetti, non primitivi, quindi non c'è modo che un array primitivo possa comportarsi diversamente da un oggetto wrapper. –