Primero mira nuestro código fuente.
La copia del código es la siguiente:
<! Doctype html>
<html>
<Evista>
<meta charset = "utf-8" />
<title> Entendimiento en profundidad de JavaScript </title>
<script type = "text/javaScript" charset = "utf-8">
console.log (esto);
</script>
</ablo>
<Body>
<h1> Entendimiento en profundidad de JavaScript </h1>
</body>
</html>
Sabemos que si abre esta página a través de un navegador, se ejecutarán los scripts contenidos en la etiqueta <Script> </script>.
Entonces echemos un vistazo a Console.log (esto); ¿A quién hace este punto?
En Google Chrome vemos:
En Mozilla Firefox vemos:
Todos vemos la ventana de salida, ¿entonces la ventana y las ventanas son iguales?
A continuación, nuestra prueba
La copia del código es la siguiente:
<script type = "text/javaScript" charset = "utf-8">
console.log (esto);
console.log ('this == Window?', esta ventana ==);
</script>
Ejecute el código y salga esta ventana == verdadero, lo que significa ventana == ventana. ¿Es este realmente el caso?
Para descubrir la relación entre ellos, continuamos probando
La copia del código es la siguiente:
<script type = "text/javaScript" charset = "utf-8">
console.log ('this =', this);
console.log ('this == Window?', esta ventana ==);
console.log ('window =', ventana);
console.log ('window =', ventana)
console.log ('Window == Window?', Ventana == Ventana)
</script>
Ver salida del navegador:
Google Chrome:
Mozilla Firefox:
De los resultados de salida podemos deducir,
La copia del código es la siguiente:
Este es un objeto de ventana;
Esto también es igual a un objeto de ventana;
La ventana también apunta a los objetos de la ventana;
La ventana es una ventana apunta a la ventana {}, que es un objeto proporcionado por el navegador;
La ventana no es igual a la ventana;
¿Por qué está sucediendo esto?
Vemos la estructura de los objetos de la ventana en la consola del navegador;
Resulta que el objeto de la ventana contiene algunas API implementadas por los fabricantes de navegadores, como el Standard SessionStorage en HTML5;
También tiene una propiedad de ventana, y el valor de esta propiedad apunta al objeto de la ventana;
Mi comprensión: los objetos de la ventana sirven a los fabricantes de navegadores. No podemos manipular directamente las propiedades de los objetos de la ventana. Las API de ventana recientemente agregadas se reflejarán en el objeto de la ventana;
Las propiedades que operamos en la ventana se reflejarán en el objeto de la ventana.
Por ejemplo, defina una ventana de variable global.a = 'aaa';
Todos los objetos en JavaScript existen en un entorno en ejecución, que también es un objeto, llamado "objeto de nivel superior". Esto significa que todos los objetos en JavaScript son subordinados de "objetos de nivel superior". Diferentes entornos operativos tienen diferentes "objetos de nivel superior". En el entorno del navegador, este objeto de nivel superior es un objeto de ventana.
Todas las variables globales del entorno del navegador son propiedades de los objetos de la ventana.
Windows puede entenderse como un entorno de contexto JavaScriptContext.