Andreas Rozek Lesehinweise letzte Änderungen Gästebuch-Eintrag Mitteilungen an den Autor  English Version  zur Leitseite zum vorherigen Thema zum nächsten Thema  zur ersten Seite zur vorherigen Seite zur nächsten Seite

Rhino_04 - Selbstuntersuchung von Objekten

Eine wichtige Eigenschaft von JavaScript ist die Fähigkeit der Objekte zur "Selbstuntersuchung" - auf diese Weise lassen sich Funktionen und Programme schreiben, die sich selbst an geänderte Umgebungen anpassen können. "Rhino_04" untersucht, inwieweit Objekte (und Felder) diese Eigenschaft unterstützen.

Zu diesem Zweck werden vier verschiedene Objekte (und Arrays) angelegt und auf ihre (aufzählbaren) Datenfelder (und Funktionen) hin untersucht. Außerdem wird versucht, gezielt auf einzelne Datenfelder der Objekte zuzugreifen - selbst wenn diese nicht aufzählbar sein sollten.

Das Programm wird ohne weitere Parameter aufgerufen

  java Rhino Rhino_04.js

und liefert folgende Ausgabe:

  Rhino_04 - investigates reflection capabilities of various objects

   - enumerating properties of "BasicObject"
     a, b, c
     a b c
   - enumerating properties of "ArrayObject"
     0, 1, 2
     0 1 2
   - enumerating properties of "mixedBasicObject"
     c, 0, 1, 2, a, b
     a b c 0 1 2
   - enumerating properties of "mixedArrayObject"
     0, 1, 2, 3
     0 1 2
   - enumerating properties of "mixedObject"
     a, b, c, 0, 1, 2
     a b c 0 1 2

   - enumerating properties of "mixedArrayObject[3]"
     a, b, c
     a b c

Die Programmausgabe birgt eigentlich keine Überraschungen: Array-Objekte verfügen zunächst einmal nur über numerisch indizierte Datenfelder, allerdings können nachträglich durchaus auch nicht-numerisch indizierte Datenfelder hinzugefügt werden. Der Quelltext des Programmes zeigt außerdem, wie sich Objekte literal definieren lassen.

Quelltexte

Das hier vorgestellte Skript ist im Quelltext verfügbar:

Haftungsausschluß

Bitte beachten Sie auch den Haftungsausschluß des Autors!

http://www.Andreas-Rozek.de/Rhino/Acquainting/Rhino_04.html    (letzter Stand: 06.04.2002)