ブール値が文字列化される方法を操作することは可能ですか?ブール値の文字列の操作
Boolean.prototype.toString
の変更は役に立たないようです。
mozreplと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"
ECMA仕様の私の理解では、+
がtoString()
を呼ぶべきであるということです。
UPDATE:私は答えを見つけた
OK!
ECMAがToString()
について話すとき、それはJSメソッドtoString()
を意味しません。
これらの演算子は言語の一部ではありません。それらは、言語の意味を で指定するのを助けるためにここで定義されています。
は、これまでの助けをhttp://bclary.com/2004/11/07/#a-9
感謝を参照してください。
することは可能ではないようです... :(
Huh - これは 'Array'でも使えます:http://jsfiddle.net/nrabinowitz/ySEx6/1/ – nrabinowitz
' new Booleanとの一貫性のために 'Boolean.prototype'に' a + ""を委譲しても(a)+ "" 'を呼び出すと、' Boolean.prototype.toString'ではなく、 'Boolean.prototype.valueOf'が呼び出されます。 –
@nrabinowitz、 'Array'はプリミティブではないオブジェクトなので、プリミティブ配列がラッパーオブジェクトとは異なる振る舞いをすることはできません。 –