bacon
Threadersteller
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Fr 05.06.2009 10:35
Titel javascript observer, kleine Knobelei |
|
|
Kurze Beschreibung: Callbacks mal anders herum. Ein Observer wird an eine beliebige Methode gebunden. Sobald diese aufgerufen wird, wird der callback getriggert. Das ganze in nativem Javascript, crossbrowsertauglich und ohne Framework.
Code: |
addObjectObserver : function(subject, method_name, callback)
{
for(var i in subject)
{
if(typeof subject[i] === "function" && subject[i] === subject[method_name])
{
var original_function = subject[i];
subject[i] = function()
{
var retval = original_function(arguments);
callback(subject, method_name, retval);
return retval;
}
}
}
}
var my_object = {
test : function(my_params)
{
return my_params;
}
}
addObjectObserver(my_object, "test", function(subject, method_name, retval)
{
console.log("my_object.test called.");
});
my_object.test();
|
So weit, so schlecht.Tut, aber ist zu simpel.
Todo:
1.) Viele observer an eine Funktion binden (geht nun)
2.) Function.prototype erweitern und durch Introspektion an den Funktions- bzw. Referenznamen kommen.
3.) Das ganze möglichst hübsch.
Ideen, Vorschläge? (Bitte nur in Code, kein "sowas gibts doch schon bei dojo")
Zuletzt bearbeitet von bacon am Fr 05.06.2009 10:45, insgesamt 3-mal bearbeitet
|
|