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:
"myFunc" nos devuelve el objeto que contiene dicha función, que es una instancia de la clase "Obj1". Sin embargo, si hacemos esto otro:function Obj1 () { } Obj1.prototype.myFunc = function () { alert (this); } var obj1 = new Obj1 (); obj1.myFunc ();
Código:
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.function Obj1 () { } Obj1.prototype.myFunc = function () { alert (this); } var obj1 = new Obj1 (); var myfunc = obj1.myFunc; myfunc ();
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.