Hola chic@s:
Desearía saber si conocéis un método práctico y bien gestionado para conocer el objeto propietario de cierta función cuando ésta se ejecuta bajo el scope de otro.
Por ejemplo, si hacemos:
Código:
function Obj1 () {
}
Obj1.prototype.myFunc = function () {
alert (this);
}
var obj1 = new Obj1 ();
obj1.myFunc ();
"myFunc" nos devuelve el objeto que contiene dicha función, que es una instancia de la clase "Obj1". Sin embargo, si hacemos esto otro:
Código:
function Obj1 () {
}
Obj1.prototype.myFunc = function () {
alert (this);
}
var obj1 = new Obj1 ();
var myfunc = obj1.myFunc;
myfunc ();
Lo que nos devolverá será el objeto window, ya que la función se ejecuta en el "scope" de la ventana, y no en el del objeto, por lo que la palabra clave "this" ya no cumple la función que esperábamos para este caso, evidentemente.
Desearía saber si existe alguna manera de averiguar el objeto que originalmente contiene la función, desde dentro de esta misma.
He probado a usar el objeto "arguments" en tiempo de ejecución desde dentro de la función, pero lo más que logro es una referencia a la propia función a través de la propiedad "arguments.calle".
También he de decir que aunque en este caso llamar a "obj1" me serviría, porque es una variable global que sabemos que existe, en un caso general no serviría, pues desconoceríamos su nombre.
Muchas gracias.
PD: Por cierto, en mi caso personal (mucho más complejo) tampoco me sirve ejecutar la función en el scope correspondiente, usando "call" o "apply", ya que lo único que conozco es la función en sí (la recibo como parámetro de una función), no el objeto.