Alcance de la consola Firebug. ¿Por qué no es "esto" siempre lo mismo? ¿No es "ventana" todo el tiempo?Ámbito de la ventana de la consola Firebug. ¿Por qué no es "esto" siempre lo mismo?
Respuesta
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 alert
this
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.
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()
oobjname['myFunction']()
, hace que el valor de que esto se objname.
Ver más Abot llamar a funciones en JavaScript
Esta respuesta precisa como es en realidad no aborda la cuestión ya que se relaciona con el comportamiento de la consola. – AnthonyWJones
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:
- 1. ¿Por qué la salida de la consola es tan lenta?
- 2. ¿Por qué mi HTTP_USER_AGENT no siempre es el mismo?
- 3. Por qué FPS no es lo mismo que la aplicación de cámara original
- 4. ¿Por qué no funciona esto la comprensión?
- 5. ¿Por qué 'esto' no es volátil?
- 6. firebug: cómo enviar datos POST en la consola Firebug?
- 7. ¿Por qué hace esto lo que hace?
- 8. Cargar javascript mediante la consola Firebug
- 9. ¿Puedo cambiar el color de fondo de la consola Firebug?
- 10. ¿No es 00.0 lo mismo que 0.0?
- 11. ¿Por qué jQuery pasa el objeto ventana a su ámbito
- 12. ¿Por qué ** ordenar ** no ordena lo mismo en cada máquina?
- 13. ¿EventGateTarget siempre es igual a $ (esto) en jQuery?
- 14. ignorar la consola Firebug cuando no está instalado
- 15. ¿Por qué Pry no corre en la consola de Heroku?
- 16. ¿Firebug no muestra el seguimiento de la pila por errores?
- 17. NO es la tecnología más importante ... ¿pero qué es esto?
- 18. Ámbito de escritura ({) en cadena en la aplicación de consola
- 19. ¿Qué es siempre 'Estándar'? Si la especificación no lo dice, ¿debería suponerse?
- 20. ¿Por qué hacer clic en una ventana secundaria no siempre trae la aplicación al primer plano?
- 21. ¿Por qué la API Web no deserializará esto pero lo hará JSON.Net?
- 22. ¿Por qué no se decodificará esto a la entidad html?
- 23. ¿Qué tan ancha es la consola node.js?
- 24. C++ Entrada y salida a la ventana de la consola al mismo tiempo
- 25. lo que es esto: ส็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็
- 26. PHP apache_request_headers() grados con realidad (según lo confirmado por Firebug): ¿por qué?
- 27. YARD no es lo mismo que RDoc?
- 28. ¿Por qué esto no es posible en C# Generics?
- 29. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 30. C# - ¿Por qué una aplicación winform de pantalla completa SIEMPRE no cubre la barra de tareas?
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? –