Hi Leute,
des öfteren will man ja wissen welche Methoden eines Objektes
in welcher Reihenfolge aufgerufen werden. Mir ist gerade aufge-
fallen, dass man dieses ganz einfach lösen kann, in dem man die
Orginalmethode überschreibt und innerhalb der neuen Methode
einen trace macht und dann die Orginalmethode aufruft.
In anderen Sprachen wie Java, C++ oder PHP wäre das wohl nicht
so einfach, da soll nochmal jemand behaupten Actionscript wäre
keine mächtige Sprache...:-)
ActionScript:
traceMessages = function (obj) {
for (var p in obj) {
if (typeof obj[p] != 'function') continue;
var tmp = obj[p];
obj[p] = function() {
trace('call-of> ' + arguments.callee.__methodName);
arguments.callee.__originalMethod.apply(this, arguments);
}
obj[p].__methodName = p;
obj[p].__originalMethod = tmp;
}
return '';
}
// Test:
Kaefer = function () {}
Kaefer.prototype.init = function (pStrName, pIntAge) {
this.strName = pStrName;
this.intAge = pIntAge;
}
Kaefer.prototype.traceProperties = function () {
trace(this.strName + '(' + this.intAge + ')');
}
objPaule = new Kaefer();
traceMessages(objPaule); // <--
objPaule.init('Paule', '23');
objPaule.traceProperties();
// Output:
//
// call-of> init
// call-of> traceProperties
// Paule(23)
nette Grüße, Holger