OO-Ansatz richtig/sinnvoll?
Ralf
- javascript
Hallo,
ich möchte Anwendern diverse Javascript-Funktionen zur Verfügung stellen, welche von außen (also durch den Anwender) parametrisierbar sein sollen.
Dafür habe ich mir nachfolgende Konstruktion ausgedacht und würde nun gern wissen, ob diese sinnvoll ist oder was man anders/besser machen könnte.
Die Funktionen werden als Event-Handler installiert, was über eine allgemeine Initialisierungs-Funktion erfolgen soll. Hier ein kurzer Code-Abriss des Teils, welcher als Datei zur Verfügung gestellt wird:
function XXinit () { ... }
XXinit ({name: "XXfunc1", handler: function () {...}, id: 3});
Der Benutzer soll nun für das Programm "XXfunc1" Parameter nach folgendem Muster definieren können (in einem SCRIPT Element):
var XXfunc1 = {
p1: "ein String",
p2: 999
}
Die Funktion XXinit soll nun via "name" auf die vom Benutzer definierten Werte zugereifen. Um z.B. auf den Wert von "p1" zuzugreifen, würde ich window[name].p1 codieren.
Das ist bisher nur ein Entwurf, aber ich bevor ich darin zuviel Zeit investiere, würde ich gern wissen, ob er sinnvoll ist.
Mit geht es darum, möglichst wiederverwendbaren und variablen Code für die Funktionen zu benutzen, die ich zur Verfügung stelle.
Ralf
Hi,
XXinit ({name: "XXfunc1", handler: function () {...}, id: 3});
var XXfunc1 = { [...]
Die Funktion XXinit soll nun via "name" auf die vom Benutzer definierten Werte zugereifen. Um z.B. auf den Wert von "p1" zuzugreifen, würde ich window[name].p1 codieren.
warum lässt Du nicht XXfunc1 direkt übergeben?
Cheatah
Hallo,
warum lässt Du nicht XXfunc1 direkt übergeben?
Du meinst als zusätzlichen Positionsparameter? Also so:
XXinit (XXfunc1, {handler: function () {...}, id: 3});
Wenn nicht, gib mir bitte mal ein Beispiel, wie du es meinst.
XXinit soll die Initialisierung für verschiedene Funktionen durchführen (Authorisierung prüfen, Event-Handler setzen etc.). Dafür muss auf die Werte zugegriffen werden, welche der Benutzer setzen kann.
Natürlich muss auch abgefangen werden, wenn er dies nicht oder falsch macht. Wenn ich den Namen des Objektes übergebe, kann ich innerhalb der Funktion darauf prüfen bzw. mit try..theese arbeiten. Wenn ich es direkt übergebe, muss ich bereits den Aufruf entsprechend vorbereiten.
Ralf
Hi,
warum lässt Du nicht XXfunc1 direkt übergeben?
Du meinst als zusätzlichen Positionsparameter? Also so:
nö, anstatt eines Strings, der dann erst wieder umgewandelt werden muss und zusätzlich auch noch auf globale Variablen beschränkt ist.
XXinit (XXfunc1, {handler: function () {...}, id: 3});
> Wenn nicht, gib mir bitte mal ein Beispiel, wie du es meinst.
Das XXfunc1 kann gerne noch im übergebenen Objekt stehen, nur ist dann vielleicht "name" nicht mehr der beste Bezeichner ;-)
> Natürlich muss auch abgefangen werden, wenn er dies nicht oder falsch macht. Wenn ich den Namen des Objektes übergebe, kann ich innerhalb der Funktion darauf prüfen bzw. mit try..theese arbeiten. Wenn ich es direkt übergebe, muss ich bereits den Aufruf entsprechend vorbereiten.
Ich sehe nicht, wo Du mit dem Code "name" Einschränkungen gegenüber einem "window[name]" hättest.
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
Hallo,
... nur ist dann vielleicht "name" nicht mehr der beste Bezeichner ;-)
Alles klar. Es fällt mir schwer, den OO-Ansatz konsequent zu verfolgen, aber ich bin auf dem Weg. Vielen Dank!
Ralf