Hola derkenuke y Cap.Buscapina, normalmente se utiliza el método apply o call para solucionar este tipo de problemas , envío un ejemplo con comentarios, es un poco chaposo, pero ya se sabe, es teoría

.
Código:
<head>
<title>Untitled</title>
</head>
<body>
<script language="JavaScript" type="text/javascript">
<!--
var uno = 1;
var dos = 2;
function haz(f) {
/*f() daría error ya que enviamos sólo la función
/function() {
return this.uno+this.dos;
}
y this en este caso se refiere a window,
si pondríamos f() devolvería 3, es decir uno + dos,
por lo tanto debemos utilizar de nuevo el método apply
*/
return f.apply(this)
}
function haz2(f){
// en este caso sólo enviamos el nombre de la función que es un método
// de objecto laPareja que previamente hemos asignado a this con el método apply.
return this[f]()
}
function pareja(uno,dos) {
this.uno=uno; this.dos=dos;
this.sumanos=function() {
return this.uno+this.dos;
}
}
var laPareja=new pareja(3,6);
// con el método apply this es igual a el objecto la laPareja y enviamos la función como argumento;
alert( haz.apply(laPareja,[laPareja.sumanos]));
// de nuevo aplicamos el método apply pero en vez de enviar la función enviamos sólo el nombre de la función;
alert( haz2.apply(laPareja,["sumanos"]));
//-->
</script>
</body>
</html>
Saludos