2011-01-02 14 views

Antwort

1

Es gefunden.

die Proxy Klasse Erweiterung ermöglicht es Ihnen, dieses Problem zu lösen.

1

Es gibt leider keine solche Sache.

Alles, was Sie tun können, ist für die Existenz einer bestimmten Eigenschaft zu überprüfen, indem Sie entweder

myObject.hasOwnProperty (name) 

auf einfache Objekte oder eine Variante von describeType() für Klasseninstanzen, zum Beispiel

describeType(myObject).accessor 

zu Holen Sie eine XMLList aller Accessor-Methoden oder

zu Erhalte eine XML-Liste aller Variablen.

decribeType() ist jedoch in Bezug auf die Leistung ziemlich teuer, so dass es sich lohnt, eine Art Hash-Tabelle zu haben, um die Listen für jeden Typ zu speichern und nach Typen zu suchen, die bereits einmal beschrieben wurden.

Sie könnten auch versuchen, verwenden/catch-Blöcke um die Teile, in denen nicht definierte Eigenschaften zugegriffen werden könnte, aber das „frisst“ auch viel Leistung weg, wenn viele Fehler geworfen werden.

+0

Wie ist das äquivalent zu '__get()' und '__set()'? In PHP fungieren diese als "catch all" für Member-Variablen. Wenn also eine Member-Variable nicht definiert ist, während ein Konsument versucht, auf sie zuzugreifen, werden '__get()' oder '__set()' aufgerufen. –

+0

Mein schlechtes. Ich hätte das genauer prüfen sollen ... Ich habe meine Antwort entsprechend bearbeitet. – weltraumpirat