Ha! Geht! =)
Hast recht - muss ja nicht die function rein. Bei mir hatte JS immer die "falsche" Klasse als Referenz genommen.
Hab das Ganze gleich mal in ne func callback() gepackt =)
// the callback function =)
function callback(cl,meth,para){
return (meth)?meth.call((cl)?cl:null,(para)?para:null):false;
}
// just a test function:
function testfunction(para){
document.write("<b>testfunction(para):</b><br>(");
for(var k in para){
document.write("<br> "+k+" => "+para[k]);
}
document.write("<br>)");
}
// callback test using testfunction(para)
para = {
'xxx':'bla',
'yyy':'more bla',
}
callback(false,testfunction,para);
document.write("<hr>");
// callback test using classes:
var Klasse_1 =
{
eigenschaft : 'KLASSE <b>1</b> eigenschaft',
para : {
'aaa':'111',
'bbb':'222',
'ccc':'333',
},
callBackTest:function()
{
document.write("<b>Klasse_1.callBackTest: </b>this.eigenschaft == <i>"+this.eigenschaft+"</i><br>");
Klasse_2.callBackTest_2(this,this.receive,this.para);
},
receive:function(para)
{
document.write("<b>Klasse_1.receive: </b>this.eigenschaft == <i>"+this.eigenschaft+"</i><br>");
document.write("<b>Klasse_1.receive(para):</b><br>(");
for(var k in para){
document.write("<br> "+k+" => "+para[k]);
}
document.write("<br>)");
}
}
var Klasse_2 =
{
eigenschaft : 'KLASSE <b>2</b> eigenschaft',
callBackTest_2:function(cl,meth,para)
{
document.write("<b>Klasse_2.callBackTest_2: </b>this.eigenschaft == <i>"+this.eigenschaft+"</i><br>");
document.write("<i>callback: meth.call(cl,(para)?para:null); </i><br>");
//meth.call(cl,(para)?para:null);
callback(cl,meth,para);
}
}
Klasse_1.callBackTest();
Alles anzeigen
Das schöne an call() ist, dass man die Referenz mitgeben kann.
Also prüft callback() einfach:
wenn FUNCTION dann rufe auf FUNCTION und
wenn KLASSE dann gib mit referenz KLASSE und
wenn PARAMETER dann gib mit PARAMETER

EDIT: apply funktioniert besser, da man die werte (para) als array [array,val,'ect'] mitgeben kann:
function callback(cl,meth,para){
return (meth)?meth.apply((cl)?cl:null,(para)?[para]:null):false;
}