我正在考虑的用例是创建一个无望的自我中心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的优点,我知道这是一个潜在的争议问题,如果可以做到的话,我纯粹感兴趣,而不是它是否应该完成.)
最佳答案 你不能.对象引用从不“伪造”.您可以添加valueOf()和toString()方法,这些方法在调用时返回false值,但是如果所有测试的都是一个不会有任何好处的引用.