你如何使javascript对象被视为麻痹?

时间:2017-01-16 02:50:44

标签: javascript null proxy-classes coalescing

我考虑的用例是为了合并创建一个无望的自我中心Null

此代码有效,但需要对相关的Null进行明确检查:



const Null = new Proxy({}, {get: () => Null});

let data = Null;

console.log(data.a.b.c.d !== Null ? "Has value" : "Is Null");




我希望能够省略明确的检查并完成

console.log(data.a.b.c.d ? "Has value" : "Is Null");

但这不起作用,因为我的Null是一个对象,因此被视为真实。

spec似乎表明这是不可能的,但javascript是如此奇怪的生态系统,我希望有人能够提出一个可能的解决方案。

(也请不要讨论这种Null的优点,我知道这是一个可能存在争议的问题,如果可以做到的话,我真的很感兴趣,而不是是否应该完成。)

1 个答案:

答案 0 :(得分:2)

不,你不能。对象引用绝不是&#34; falsy&#34;。您可以添加valueOf()toString()方法,这些方法在被调用时会返回错误值,但是如果所有测试过的都是不会做任何好处的参考。< / p>