强制一个对象评估为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(); }