2009-11-26 13 views

Respuesta

3

El valor de this en la consola será el mismo que el valor de this en el código que está siendo ejecutado . Considere lo siguiente: -

function outer() 
{ 
     // this is window 

    var x = {n:12}; 

    var fn = function() 
    { 
       // this is object {n:12} 

     alert(this.n); 
    } 

    fn.call(x); 
} 

...

<img src="thing.gif" onclick="outer()" /> 

Si se pone un punto de ruptura en la línea x = {n:12}, cambia a la consola se encuentra el this es la ventana. Sin embargo, cuando ingresa a la línea alertthis en la consola, se encuentra el objeto que contiene la variable x. IOW no hay distinción entre this en el contexto de ejecución y la consola. Es por esta razón que puede usar la consola para modificar los valores de las variables y las propiedades durante la depuración.

+0

gracias por su respuesta ... pero, una pregunta: si no estoy atascado en un punto de interrupción, ¿puede "esto" ser diferente a la ventana en la consola? –

2

En una función llamada directamente sin un propietario del objeto explícito, hace que el valor de este sea el predeterminado objeto (ventana en el navegador).

En una función llamada utilizando la sintaxis de invocación de método , como objname.myFunction() o objname['myFunction'](), hace que el valor de que esto se objname.

Ver más Abot llamar a funciones en JavaScript

JavaScript, 5 ways to call a function

+0

Esta respuesta precisa como es en realidad no aborda la cuestión ya que se relaciona con el comportamiento de la consola. – AnthonyWJones

2

La palabra clave this siempre se refiere al propietario de la función que se llama. Puede leer una explicación clara y detallada en él here.

Desde el artículo he vinculado por encima de esta imagen Creo que lo explica con mayor claridad:

alt text http:////i49.tinypic.com/ax1jxw.png

Cuestiones relacionadas