Ver Mensaje Individual
  #3 (permalink)  
Antiguo 21/10/2006, 19:33
kepawe
 
Fecha de Ingreso: agosto-2004
Mensajes: 157
Antigüedad: 20 años, 6 meses
Puntos: 5
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