强制对象评估为假

Geo*_*ith 4 javascript node.js

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

我正在尝试创建一个Object计算结果为false的,例如:

var Foo = function() { return this; }
var bar = new Foo;
if (bar) // returns false;
Run Code Online (Sandbox Code Playgroud)

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

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

我希望以下任何条件句都可以充当该函数返回一个假值,而不必修改条件句以适应非布尔值的可能性。

Esa*_*ija 5

你能得到的最接近的像

if (+obj)
Run Code Online (Sandbox Code Playgroud)

伪造的对象定义了.valueOf()返回0或的函数false

var o = {
    valueOf: function() {
        return false;
    }
};
if (+o) {
    throw unreachable();
}
Run Code Online (Sandbox Code Playgroud)