JavaScript中有没有办法预先指定任意对象应该具有的布尔值?
例如,假设我定义
function NIL () {
this.car = this.cdr = this;
}
var nil = new NIL;
我希望!nil
评估为true
。这可能在JS吗?
(P.S。:我希望通过类比toBoolean
来定义像toString
这样的方法可以解决问题,但这不起作用。)
答案 0 :(得分:2)
转换为布尔值的规则由ECMAscript Language Specification修正,因此您无法做到这一点。您应该使用自己的功能来执行检查。
答案 1 :(得分:1)
你可以通过覆盖“valueOf”来实现它的工作 -
NIL.prototype.valueOf = function () {
return false;
};
它不会生成!nil == true
但会生成nil == false
。
但由于这种行为不一致,我同意其他答案 - 你应该使用自己的功能。
答案 2 :(得分:0)
似乎您希望使用函数式编程方式来定义自定义类型系统。我不确定这是否是你所需要的,但是这就是你所描述的
function NIL () {
this.car = this.cdr = this;
this.isNull = function(){
return false;
}
}
var nil = new NIL();
console.log(!nil.isNull()) // true