[JavaScript] operator() gesucht
-
Kann man irgendwie einen
op()
definieren?Ich will
doSomething
sowohl Objekte als auch Funktionen übergeben können:function doSomething( functor ) { functor("blurb"); } function SomeObject( whatever ) { this.whatever = whatever; this.??? = function( foo ) { /* operator() */ } } // ... var obj = new SomeObject(42); doSomething(obj); doSomething(alert);
-
*bump*
-
Von Haus aus kann JavaScript das derzeit (soweit ich weiß) noch nicht. Habe damit auch schon ewig nichts mehr gemacht bzw. habe mich damit nie wirklich beschäftigt, aber da es mich nun auch interessiert hat, hab ich mal ein wenig gegoogled (für JavaScript 2.0 scheint Unterstützung dafür geplant zu sein - oder war es zumindest mal). Nach längerem hin und her habe ich dann mal folgendes zusammengebastelt. Vielleicht kannst du ja mit diesem kleinen Umweg etwas anfangen:
function callFunc( functor ) { if(typeof functor == "function") { functor("blurb"); } if((typeof functor == "object") && (typeof functor.fn == "function")){ functor.fn(); } } function doSomething( functor ) { callFunc(functor); } function SomeObject( whatever ) { this.whatever = whatever; this.fn = function (value) { alert(whatever); }; } var obj = new SomeObject(42); doSomething(obj); doSomething(alert);
-
Ah, Schade.
Und Danke für den Workaround, aber wenn's sowieso nicht richtig geht bleib ich einfach bei
doSomething( { foo: function(x) { return bar(x); } } );