强制一个对象评估为false

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

我试图创build一个评估为false的Object ,例如:

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

这是否可能通过重写对象的某个函数,例如toString

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

我希望任何后续的条件,如果函数返回一个错误的值,而不必修改条件以适应非布尔值的可能性。

你可以得到最接近的就像

 if (+obj) 

如果一个虚假的对象定义了一个返回0或者false.valueOf()函数:

 var o = { valueOf: function() { return false; } }; if (+o) { throw unreachable(); }