5

我猜这可能是特定于应用程序的,但是我使用的是 node.js——只要它在 v8 引擎中工作,我不介意。

我正在尝试创建一个Object评估为假的,例如:

var Foo = function() { return this; }
var bar = new Foo;
if (bar) // returns false;

这是否可以通过覆盖对象的某个功能来实现,例如toString

如果有人想知道这可能有什么用例:它用于从通常返回布尔值的函数返回错误对象,但也可能遇到错误并返回我的自定义错误对象。

我希望任何以下条件都像函数返回错误值一样,而无需修改条件以适应非布尔值的可能性。

4

1 回答 1

5

你能得到的最接近的是

if (+obj)

一个 falsy 对象定义了一个返回or的.valueOf()函数:0false

var o = {
    valueOf: function() {
        return false;
    }
};
if (+o) {
    throw unreachable();
}
于 2013-08-11T19:49:24.697 回答