是否可以操縱布爾值串化的方式?操縱布爾值串化
更改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
感謝您的幫助迄今。
似乎並不可能... :(
呵呵 - 這與'Array'一起工作,但是:http://jsfiddle.net/nrabinowitz/ySEx6/1/ – nrabinowitz
即使'a +「」委託給'Boolean.prototype'以與'new Boolean (a)+「」,它會導致調用Boolean.prototype.valueOf而不是Boolean.prototype.toString。 –
@nrabinowitz,'數組'是對象,而不是基元,所以不可能有一個基本數組的行爲與包裝器對象不同。 –