2

次の行の何か:

  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」を介して同等性をチェックします。

それで、上記のようにifブロックを記述できるように、Boolean.prototypeから継承するカスタムブールオブジェクトを持つことは可能ですか?

4

1 に答える 1

1

いいえ、に評価されるオブジェクトを持つことはできませんfalse。fromを継承しても、動作 Boolean.prototypeは変わりません。代わりに、すべてのレクサーオブジェクトに一種の「評価」メソッドを実装させて、次のように機能させます。ToBoolean

var bool = new LexerBoolean("FALSE")
if (bool.getSemanticValue()) {…}
于 2013-02-18T10:03:20.190 に答える