Alcance de la ventana de la consola Firebug. ¿Por qué no es & # 8220; este & # 8221; ¿siempre lo mismo?

StackOverflow https://stackoverflow.com/questions/1803660

  •  05-07-2019
  •  | 
  •  

Pregunta

Ámbito de la consola Firebug. ¿Por qué no es " esto " ¿siempre lo mismo? No debería ser " ventana " todo el tiempo?

¿Fue útil?

Solución

El valor de this en la consola será el mismo que el valor de this en el código que se está ejecutando actualmente. Considera: -

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 coloca un punto de interrupción en la línea x = {n: 12} , cambie a la consola y encontrará que este es la ventana. Sin embargo, cuando pasa a la línea de alerta , este en la consola es 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 puedes usar la consola para modificar los valores de las variables y las propiedades durante la depuración.

Otros consejos

  

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

     

En una función llamada usando el método   sintaxis de invocación, como    objname.myFunction () o    objname ['myFunction'] () , causa el   el valor de esto es ser objname.

Ver más funciones de llamadas abot en JavaScript

JavaScript, 5 formas de llamar a una función

La palabra clave esta siempre se refiere al propietario de la función a la que se llama. Puede leer una explicación clara y detallada sobre esto aquí .

Desde el artículo que vinculé encima de esta imagen, creo que lo explica más claramente:

texto alternativo http:////i49.tinypic.com/ax1jxw.png

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top