[ Impressum ]

Liste der "statischen inneren Klassen" einer Zebra-Klasse

www.Rozek.de > Zebra > Investigation > staticInnerClassesOfClass
Betrachtet man die "statischen" Methoden und Eigenschaften der Klassen, die Teil der Zebra-Distribution sind so stellt man fest, dass etliche davon Zebra[1]-Klassenobjekte sind und damit (im Java-Jargon) "statische innere Klassen" darstellen. Die zuvor beschriebenen Methoden zebra.staticMethodsOfClass und zebra.staticPropertiesOfClass filtern diese Objekte bereits aus - aber hier sollen sie genauer untersucht werden.

Liste aller "statischen inneren Klassen" einer Klasse

Zebra Klassen-Objekte sind Funktionen mit einer bestimmten Struktur - und an dieser Struktur kann man sie in der Menge der statischen Methoden und Eigenschaften einer Zebra-Klasse erkennen.

Die folgende Funktion liefert eine Liste aller "statischen inneren Klassen" für eine gegebene Zebra-Klasse. Ein zusätzliches Argument (sorted) kann mitgegeben werden, wenn eine alphabetisch sortierte Klassen-Liste gewünscht wird:
zebra.staticInnerClassesOfClass = function staticInnerClassesOfClass (Class, sorted) {
var ClassList = [];
for (var ClassName in Class) {
if (Class.hasOwnProperty(ClassName)) {
if (ClassName === '$parent') {
continue; // skip fields resembling classes found in any Zebra class
};


var innerClass = Class[ClassName];
if (typeof(innerClass) === 'function') {
if ( // process inner Zebra classes only
(typeof(innerClass._hash_) === 'string') &&
(innerClass._hash_.slice(0,7) === '$zebra_')
) {
ClassList.push(ClassName);
};
};
};
};


if (!!sorted) {
ClassList.sort();
};
return ClassList;
};

Das folgende kleine JSFiddle illustriert das Prinzip dieser Funktion anhand einer speziell konstruierten Klasse:



Durch Anpassung des Aufrufes der Methode staticInnerClassesOfClass können aber auch andere Klassen untersucht werden.

Den Quelltext der Funktion zebra.staticInnerClassesOfClass können Sie sich hier herunterladen - die Funktion ist aber auch Bestandteil meines kompletten "ZebraTweaks"-Paketes.

Literaturhinweise

[1]
Andrei Vishneuski
HTML5 Rich UI JavaScript Library
Zebra ist eine noch relativ neue JavaScript-Bibliothek für grafische Benutzeroberflächen in Web-Anwendungen. Diese Seite ist der primäre Anlaufpunkt, wenn Sie sich für Zebra interessieren.