[ Impressum ]

Liste aller Methoden einer Zebra-Klasse

www.Rozek.de > Zebra > Investigation > MethodsOfClass
Da Zebra [1] eine eigene Variante der Objekt-Orientierung [2][3] bereitstellt, befinden sich die Methoden eines Objektes allesamt in derjenigen Klasse, von der dieses Objekt unmittelbar abgeleitet wurde - es wird also (anders als in JavaScript üblich) keine "Prototype Chain" durchsucht.

Liste aller Objekt-Methoden einer Klasse

Eine Liste aller Objekt-Methoden zu erstellen, ist dementsprechend einfach:
  1. alle Methoden liegen im "prototype"-Feld der Klasse selbst (die gleichzeitig als Konstruktor für die Objekte dient)
  2. darin sind allerdings auch die speziellen Methoden $this und $super enthalten - diese sollte man ggfs. ausfiltern
Überladene Methoden tauchen im "prototype"-Feld nur einmal auf - in Form einer "ProxyMethod", die anhand der Anzahl übergebener Argumente die tatsächlich angeforderte Funktion ermittelt und ausführt.

Die folgende Funktion liefert eine Liste aller Methoden für eine gegebene Klasse. Ein zusätzliches Argument (sorted) kann mitgegeben werden, wenn eine alphabetisch sortierte Methoden-Liste gewünscht wird:
zebra.MethodsOfClass = function MethodsOfClass (Class, sorted) {
var Prototype = Class.prototype; // HERE are the actual methods!


var MethodList = [];
for (var MethodName in Prototype) {
if (Prototype.hasOwnProperty(MethodName)) {
if ( // skip special internal methods
(MethodName === '') ||
(MethodName === '$super') || (MethodName === '$this')
) { continue };


var Method = Prototype[MethodName];
if (typeof(Method) === 'function') {
MethodList.push(MethodName);
};
};
};


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

Das folgende kleine JSFiddle zeigt die (zahlreichen) Methoden der Klasse zebra.ui.Panel:



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

Den Quelltext der Funktion zebra.MethodsOfClass 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.
[2]
Andrei Vishneuski
Easy OOP
Zebra implementiert seine eigene, an Java angelehnte, Variante der Objekt-Orientierung. Diese Seite gibt einen kurzen Überblick über die Konzepte.
[3]
Andrei Vishneuski
Easy OOP
Zebra implementiert seine eigene, an Java angelehnte, Variante der Objekt-Orientierung. Diese Seite erläutert die zugrunde liegenden Konzepte.