Che modo orrendo... E se lo scope non è global? Quel metodo non funziona. E nemmeno se l'ambiente di esecuzione non è il browser.

Io farei così:
codice:
function toBeCalled(){alert('hello')}
function caller(f, args){f.apply(this, args||[])} 
caller(toBeCalled);