Übergeordnete Callback-Funktion aus Objekt aufrufen

ahykes

Erfahrenes Mitglied
Hallo und Guten Morgen.

Ich habe ein Problemechen mit meiner Klasse. Ich habe mir ein sog. Multi-Ajax Objekt geschrieben. Dieses nutze ich um verschiedene AJAX-Requests gleichzeitig an einen lokalen Prozess zu schicken:

var ax = new ajaxMultiSlotObject(5); // Erstellt eine Struktur mit 5 Ajax-Objekten.

Jedes Element dieser Struktur enthält also ein AJAX-Objekt. Jedem Objekt kann ich eine Callback-Funktion übergeben, die nach dem Request ausgeführt wird.

So weit, so gut. Im Normalfall funktioniert die Sache.

Nun habe ich aber den Fall, dass ich eine weitere Klasse "X" habe, die im Konstruktor genau das sagt:

var ax = new ajaxMultiSlotObject(5); // Erstellt eine Struktur mit 5 Ajax-Objekten.

Wenn ich nun var y = new X() sage wird also automatisch ein ajaxMultiSlotObject erstellt.
Wenn ich nun als Callback eine Methode von X angebe, sagt er mit, dass er die Methode nicht kennt! <- das ist das Problem :-)

Selbst wenn ich ihm sage: "Führe y.Methode aus", geht es nicht.

Kleines Bildchen (bitte nicht lachen :-/ ) ist im Anhang.

Gibt es wie bei Action Script einen Befehl wie _root****

Könnt ihr mir helfen? Danke!!
 

Anhänge

  • profi.JPG
    profi.JPG
    23,9 KB · Aufrufe: 13
Zuletzt bearbeitet:
Bin schon einen kleinen Schritt weiter!
Der Fehler liegt wohl bei Aufruf der Callback-Funktion:

if(typeof window[callBackFunc] == 'function')

wenn in callBackFunc "y.methode" steht, geht es nicht.
Schreibe ich es nun direkt y.methode führt er die Methode aus.

Ist die window[string functionname] - Variante überhaupt die richtige?
 
Ist die window[string functionname] - Variante überhaupt die richtige?

Nur, wenn die Funktion zum Window Objekt gehört. In deinem Fall tut Sie das ja scheinbar nicht.

y.methode ist äquivalent zu y['methode'], daraus folgt

Javascript:
if(typeof y.methode == 'function')
//oder
if(typeof y['methode'] == 'function')

Aber ich weiß nicht, ob das deinem Problem weiter hilft. Hat jedes y die gleiche Methode oder hat jede Instanz seine eigene? Falls zweiteres der Fall ist, brauchst du ja eine Referenz auf das äußere Objekt.
 
Hi und Danke für Deine Antwort.

Jedes y hat die gleichen Methoden. Der Witz ist folgendes: Zum Testen habe ich einfach mal den direkten Aufruf der Methode an die Stelle gepackt. Sprich: Ich habe den Methodenname einfach mal hingeschrieben "y.methode(daten);" - und es geht.

Wenn ich nun aber den Methodenname in einer Variable übergeben lasse (was ja auch der eigentliche Sinn war) geht es nicht.

Demnach funktioniert if(typeof window['y.' + callBackFunc] == 'function') {.. nicht.
 
Hammer! Danke für Deine Hilfe!

if(typeof y[callBackFunc] == 'function') hats gebracht!!

Danke > Erledigt.
 
Eine Frage habe ich noch! :-)

Wie müsste es denn aussehen, wenn ich y auch übergebe, sprich y und Methode stehen in einer Variable...?
 
Kommt drauf an, zu was "y" gehört. Ohne deinen Code ist das schwer.

Javascript:
var foo = 'y';
var bar = 'methode';

if(window[foo] != 'undefined' && window[foo][bar] == 'function')
 
Danke! Ich habe es wie folgt gelöst.
Wenn foo bereits vom Typ-Objekt ist, kann ich es einfach so schreiben:

foo[bar](httpRequestObject.responseXML);

Manchmal denkt man einfach zu lange nach :-/

Dennoch: Vielen Dank!
 
Zurück