Используемый случай, который я рассматриваю, создает безнадежно эгоцентричный Null
для объединения.Как вы можете заставить объект javascript рассматриваться как ложь?
Этот код работает, но требует явной проверки против 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
является объектом, и, как таковой, d как правдивый.
spec, кажется, указывает, что это невозможно, но javascript - такая странная экосистема, что я надеюсь, что кто-то сможет придумать возможное решение.
(Также, пожалуйста, не обсуждать достоинства этого вида Null
, я знаю, что это потенциально спорный вопрос, и я просто интересуюсь, если это может быть сделано, не является ли это должно быть сделано.)
Возможный дубликат [Может ли объект быть ложным?] (Http://stackoverflow.com/questions/2081195/can-an-object-be-false) – Sheepy
Используйте функцию утилиты, которая возвращает то, что вы хотите – charlietfl