Netter Artikel an sich. Allerdings fehlen |prototype|s komplett. Ferner scheint mir dieses Event-Workaround-This-Gemauschel ziemlich "konfus". Richtiger Ansatz mit den closures, aber warum sollte man die Referenz auf |this| in den "global" packen (außer ggf. für Wiederverwendbarkeit)?
|Object| und auch |Function| haben nebenbei noch einiges an "Utilities" zu bieten...
<script type="text/javascript"> function myObj(name) { this.myName = name; } myObj.prototype = { delayAlertSimple: function mO_delayAlertSimple(message, to) { var self = this; setTimeout(function(){alert(self.myName + "\n\n" + message);}, to); }, _doAlert: function mO__doAlert(message) { alert(this.myName + "\n\n" + message); }, delayAlertCall: function mO_delayAlertCall(message, to) { var self = this; setTimeout(function(){self._doAlert(message);}, to); }, _genericDelayedCall: function mO__genericDelayedCall(func, to) { var self = this; var args = []; for (var i = 2; i < arguments.length; ++i) { args.push(arguments[i]); } setTimeout(function(){ func.apply(self, args); }, to); }, delayAlertGeneric: function mO_delayAlertGeneric(message, to) { this._genericDelayedCall(this._doAlert, to, message); } } function myDerived(name, status) { this._name = name; this._status = status; this.myName = this._name + " " + this._status;; } myDerived.prototype = myObj.prototype; var obj = new myObj("hallowelt"); obj.delayAlertSimple("Die Welt sagt hallo!", 1000); obj.delayAlertCall("Und ich grüße zurück!", 2000); obj.delayAlertGeneric("Was eine tolle Welt!", 3000); var obj2 = new myDerived("schöne", "Welt"); obj2.delayAlertSimple("Die Welt sagt hallo!", 4000); </script> <body onload="obj.delayAlertGeneric('loadediload', 10);"> <div id="test" onclick="obj.delayAlertGeneric('Clickediclick', 10);">click()</div> </body>(Unpraktische, aber theoretisch nicht zu verachtende Beispiele)