Thema: traceMessages
Einzelnen Beitrag anzeigen
Alt 02-04-2003, 18:20   #1 (Permalink)
hOk
Neuer User
 
Benutzerbild von hOk
 
Registriert seit: Jun 2001
Ort: berlin
Beiträge: 829
Post traceMessages

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:
  1. traceMessages = function (obj) {
  2.     for (var p in obj) {
  3.         if (typeof obj[p] != 'function') continue;
  4.         var tmp = obj[p];
  5.         obj[p] = function() {
  6.             trace('call-of> ' + arguments.callee.__methodName);
  7.             arguments.callee.__originalMethod.apply(this, arguments);
  8.         }
  9.         obj[p].__methodName = p;
  10.         obj[p].__originalMethod = tmp;
  11.     }
  12.     return '';
  13. }
  14.  
  15. // Test:
  16. Kaefer = function () {}
  17. Kaefer.prototype.init = function (pStrName, pIntAge) {
  18.     this.strName = pStrName;
  19.     this.intAge = pIntAge;
  20. }
  21. Kaefer.prototype.traceProperties = function () {
  22.     trace(this.strName + '(' + this.intAge + ')');
  23. }
  24.  
  25. objPaule = new Kaefer();
  26.  
  27. traceMessages(objPaule); // <--
  28.  
  29. objPaule.init('Paule', '23');
  30. objPaule.traceProperties();
  31.  
  32. // Output:
  33. //
  34. // call-of> init
  35. // call-of> traceProperties
  36. // Paule(23)
  37.  
nette Grüße, Holger
__________________
gobogo
hOk ist offline   Mit Zitat antworten