Cheatah: if (new MyObject()) mit Boole'sch falschen Ergebnis

Beitrag lesen

Hi,

ich speichere ein selbst erstelltes Objekt, welches bestimmte Methoden vorhalten soll. Es resultiert aus Prüfungen, die entweder "nichts" oder "ein Objekt mit bestimmten Werten" ergeben.

Um Abfragen auf das Objekt möglichstleicht zu gestalten, habe ich im Falle "nichts" bisher einen leeren String zurück geliefert. Dieser ist ein vollwertiges Objekt, so dass "foo['bar']" keinen Fehler erzeugt, liefert aber bei "if (foo)" false zurück (sinngemäß). Nun erweitere ich das "echte" Objekt aber um einige Methoden, um "if (foo.qaz('bar'))" erfragen zu können. Da ich nun das String-Objekt nicht um die selben Methoden erweitern möchte (die da nämlich eigentlich nichts verloren haben -- oder eventuell sogar anderweitig benötigt werden), versuche ich ein Objekt zu schaffen, welches bei einem "if (foo)" ebenso reagiert (wird), wie es bei einem Leerstring der Fall ist.

Leider sind meine Recherchen und Versuche bisher erfolglos. Von String erben zu lassen brachte nichts, Rückgaben in toString()- und valueOf()-Methoden bewirken nicht das Gewünschte (egal ob ein Leerstring, false, null oder undefined geliefert wird), nicht einmal ein "return false;" direkt im Constructor brachte Erfolg :-) Wie also bringe ich einem Objekt bei, "falsch zu sein"?

Zur Verdeutlichung noch mal ein Dummy-Code:

var x = 42 ? new RealObject() : new FalseObject();
var y = 0  ? new RealObject() : new FalseObject();
...
if (x && x.foo && x.bar()) { /* Soll ausgeführt werden */ }
if (y || y.foo || y.bar()) { /* Soll nicht ausgeführt werden */ }

Cheatah

--
X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
X-Will-Answer-Email: No
X-Please-Search-Archive-First: Absolutely Yes