以下内容:
var MyCustomBoolean = function(b){
if (b === 'FALSE'){
this.b = false;
}else if(b === 'TRUE'){
this.b = true;
}
this.valueOf = function(){
return this.b;
}
}
以便以下内容生成一个带有“在你脸上”文字的警告
if (new MyCustomBoolean('TRUE')){
alert("In your face!");
}
if (new MyCustomBoolean('FALSE')){
alert("not so much.");
}
现在我可以通过显式调用valueOf函数来解决这个问题。通过“myBObj == true”检查等价。
那么有可能有一个继承自Boolean.prototype的自定义布尔对象,这样我可以写出如上所述的块吗?
答案 0 :(得分:1)
不,不可能有任何评估为false
的对象。继承
Boolean.prototype
不会更改ToBoolean
behaviour。相反,让所有lexer对象实现一种“evaluate”方法,以便以下方法起作用:
var bool = new LexerBoolean("FALSE")
if (bool.getSemanticValue()) {…}