是否可以拥有一个继承自Boolean.prototype的自定义布尔对象?

时间:2013-02-18 09:45:48

标签: javascript

以下内容:

  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的自定义布尔对象,这样我可以写出如上所述的块吗?

1 个答案:

答案 0 :(得分:1)

不,不可能有任何评估为false的对象。继承 Boolean.prototype不会更改ToBoolean behaviour。相反,让所有lexer对象实现一种“evaluate”方法,以便以下方法起作用:

var bool = new LexerBoolean("FALSE")
if (bool.getSemanticValue()) {…}