2011-03-08 21 views
13

Duplicar posible:
Javascript how do you find the caller function?JavaScript - Obtener llamando objeto

Hola chicos!

¿Hay alguna forma de obtener el valor de this de la función que ha llamado a la función actual? vistazo a esto:

function TraceMySelf(){ 
    console.log(this); 
} 
function A(){ 
    TraceMySelf(); 
    console.log(this); 
} 

var a = new A(); 

Cuando se ejecuta este código, la consola muestra primero el objeto window y entonces el objeto a. ¿Cómo puedo hacer que el código muestre el objeto a dos veces, con solo cambiar la línea 2? Sé que podría aplicar la función dentro de A con this, pero eso no es lo que quiero.

¿Esto es posible?

Gracias por su ayuda!

+0

Creo que la única manera es pasarlo como argumento – n00b

+0

¿De ninguna manera sin pasarlo como argumento? @hvgotcodes: en su pregunta mencionada, pregunta por la FUNCIÓN de llamada;) –

+0

@FlashFan: solo las funciones pueden llamar a otras funciones. Los objetos no pueden. No puede obtener el objeto del que es propiedad una función porque no existe una relación inversa. @hvgotcodes: Sí, es un duplicado, pero debe tenerse en cuenta que el uso de 'arguments.callee' y demás está obsoleto. –

Respuesta

2

Creo que esta es la respuesta a su pregunta: StackOverflow 280389

Sin embargo, creo que la respuesta correcta es "no hagas eso". Creo que va en contra de cómo JavaScript está diseñado.

También podría valer la pena mirar jQuery Proxy para otra forma de vincular la función y el objeto.

+0

-1) Dada la lista de comentarios sobre la pregunta, se ha mencionado que esta no es la respuesta que el usuario está buscando. – Raynos

+2

Tienes razón, hay una discusión arriba. La mayor parte está escondida detrás de un enlace . Lo que no está aquí es una respuesta. No creo que sea difícil escribir una. De todos modos, gracias por tus comentarios. – JoshRivers

Cuestiones relacionadas