[ascoders] AW: Klassenfrage
- From: Timo Hölzer <t.hoelzer@xxxxxxxxx>
- To: <ascoders@xxxxxxxxxxxxx>
- Date: Mon, 25 Oct 2004 15:11:39 +0200
Hi Jan
this wäre in deinem Fall das XML Object.
versuch doch mal "trace(this.hasChildNodes)"
liefert "[type function]", oder?
Da Du nur die Referenz auf eine anonyme funktion
an loadXML übergibst, bezieht sich this innerhalb
der funktion immer aus das Object in dem sie ausgeführt
wird. In deinem Fall "testXML".
man könnte es lösen, indem man dem XML Object
eine Referenz auf die Instanz der Klasse mitgibt.
myClass = function() {
this.dummyProp = "foo";
};
mcClass.prototype = new Object();
myClass.prototype.loadXML = function(path, callback) {
var testXML = new XML();
testXML.ignoreWhite = true;
testXML.dummyProp = "bar";
/************************************
Referenz auf Klassen Instanz
**************************************/
testXML._parent = this;
testXML.callback = callback;
/************************************
**************************************/
testXML.onLoad = function(success) {
if(success) {
this._parent[callback](this) // this entspricht
referenz auf textXML
}
};
testXML.load(path);
};
myClass.prototype.doMoreStuff = function() {
trace(this.dummyProp);
};
var bla = new myClass();
bla.loadXML("../dummy.xml", "doMoreStuff");
Gruß
Timo H.
-----Ursprüngliche Nachricht-----
Von: ascoders-bounce@xxxxxxxxxxxxx
[mailto:ascoders-bounce@xxxxxxxxxxxxx]Im Auftrag von Jan Schluenzen
Gesendet: Montag, 25. Oktober 2004 14:54
An: ascoders@xxxxxxxxxxxxx
Betreff: [ascoders] Klassenfrage
Das habe ich zwar schon bei FlashCoders gepostet, allerdings gab's da
nicht so recht feedback. Ich hoffe also, dass Ihr mir hier mehr helfen
könnt:
Ich habe folgende AS1-Klasse erstellt, mehr Info dazu von mir unten:
myClass = function() {
this.dummyProp = "foo";
};
mcClass.prototype = new Object();
myClass.prototype.loadXML = function(path, callback) {
var testXML = new XML();
testXML.ignoreWhite = true;
testXML.dummyProp = "bar";
testXML.onLoad = function(success) {
if(success) {
callback(testXML);
}
};
testXML.load(path);
};
myClass.prototype.doMoreStuff = function() {
trace(this.dummyProp);
};
var bla = new myClass();
bla.loadXML("../dummy.xml", bla.doMoreStuff);
Beim onLoad-Event des XMLs (in der loadXML() ) soll die als Parameter
übergebene callback-funktion aufgerufen werden. Das klappt auch,
allerdings findet das trace innerhalb der doMoreStuff() die dummyProp
nicht mehr. Ich habe eigentlich erwartet, dass er mir jetzt "foo"
tracen sollte, da die Methode auf myClass definiert wurde (und auch so
aufgerufen wird). Die Methode findet er, allerdings traced er mir
jetzt "undefined". Wenn ich nur 'this' tracen lassen möchte, sagt er
mir '[type Object]'. Es kommt mir fast wie ein Geister-Objekt vor, da
die einzigen Objekte, die ich mit dem Code anlege die Instanz 'bla'
und das temporäre XML-Object 'testXML' sind.
Kann mir mal jemand mehr dazu sagen, warum das nicht funktioniert? Und
vor allem, was für die Methode doMoreStuff() in dem Moment des Aufrufs
dann 'this' ist? Ich kann das Problem irgendwie überhaupt nicht
nachvollziehen... wenn ich den Aufruf am Ende des Codes in
bla.loadXML("../dummy.xml", function() { bla.doMoreStuff} ); ändere,
läuft's natürlich, aber das will ich eigentlich nicht...
Danke schon mal...
Jan
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
------------------------------------------------------
Archiv : http://www.freelists.org/archives/ascoders/
Optionen : http://www.freelists.org/list/ascoders
------------------------------------------------------
- Follow-Ups:
- [ascoders] Re: AW: Klassenfrage
- From: Jan Schluenzen
- References:
- [ascoders] Klassenfrage
- From: Jan Schluenzen
Other related posts:
- » [ascoders] AW: Klassenfrage
- » [ascoders] Re: AW: Klassenfrage
- » [ascoders] AW: Klassenfrage
- » [ascoders] Re: AW: Klassenfrage
- [ascoders] Re: AW: Klassenfrage
- From: Jan Schluenzen
- [ascoders] Klassenfrage
- From: Jan Schluenzen