操纵布尔值的串化
是否有可能操纵布尔值串化的方式?
  改变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() 。 
更新:
好的,我找到了答案!
  当ECMA谈到ToString()它并不意味着JS方法toString() 。 
这些操作员不是该语言的一部分; 它们在这里被定义来帮助描述该语言的语义。
请参阅http://bclary.com/2004/11/07/#a-9
感谢你目前的帮助。
似乎不可能...... :(
  我认为.toString()是在本机布尔类型的Boolean版本上调用的(布尔类型是一个Object,但本机类型不是,与Numbers相同),并且+被浏览器重载,以将布尔值本地转换为字符串。 
这个问题之前已经被问到了(我确信我说的是答案),但我似乎无法找到它。
看起来你找到了答案,但仅供参考:
  第11.6.1节解释了在字符串和另一个值上调用+时会发生什么。 
如果Type(lprim)是String或Type(rprim)是String,则返回连接ToString(lprim)和ToString(rprim)的字符串,
  正如你所说的,ToString不仅仅是对toString的调用。 
9.8节解释了ToString的作用。
抽象操作ToString根据表13将其参数转换为String类型的值:
布尔值如果参数为true,则结果为“true”。 如果参数为false,则结果为“false”。
  请注意,对于对象, valueOf被调用,而不是toString因为ToString委托给ToPrimitive,对于本机对象,它将在DefaultValue中以类型提示结束undefined 
让valueOf是用参数“valueOf”调用对象O的[[Get]]内部方法的结果。
如果IsCallable(valueOf)为true,那么,
让val是调用valueOf的[[Call]]内部方法的结果,其中O为此值和一个空参数列表。
如果val是原始值,则返回val。
  如果你想让"" + new Boolean(a)委托给Boolean.prototype.toString你首先必须重写Boolean.prototype.valueOf以返回一个非原始值,这是不礼貌的。 
