Der Use-Case Ich erwäge ist die Schaffung eines hoffnungslos egozentrisch Null
für Koaleszenz.Wie können Sie bewirken, dass ein Javascript-Objekt als Falsy behandelt wird?
Dieser Code funktioniert, erfordert aber eine explizite Prüfung gegen die Null
in Frage:
const Null = new Proxy({}, {get:() => Null});
let data = Null;
console.log(data.a.b.c.d !== Null ? "Has value" : "Is Null");
ich in der Lage sein möchten, die explizite Kontrolle auszulassen und einfach tun
console.log(data.a.b.c.d ? "Has value" : "Is Null");
aber das funktioniert nicht, weil mein Null
ein Objekt ist, und als solche ist treate d als truthy.
Die spec scheint darauf hinzuweisen, dass dies nicht möglich ist, aber Javascript ist so ein seltsames Ökosystem, dass ich hoffe, dass jemand in der Lage sein wird, eine mögliche Lösung zu finden.
(Bitte auch diskutieren nicht über die Vorteile dieser Art von Null
, ich weiß, es ist eine potenziell strittige Frage und ich bin rein daran interessiert, wenn es getan werden kann, nicht, ob es getan werden sollte.)
Mögliche Duplikate von [Kann ein Objekt falsch sein?] (Http://stackoverflow.com/questions/2081195/can-an-object-be-false) – Sheepy
Verwenden Sie eine Dienstprogrammfunktion, die zurückgibt, was Sie wollen – charlietfl