Regardez d'abord notre code source.
La copie de code est la suivante:
<! Doctype html>
<html>
<adal>
<meta charset = "utf-8" />
<Title> Compréhension approfondie de JavaScript </Title>
<script type = "text / javascript" charset = "utf-8">
console.log (ceci);
</cript>
</ head>
<body>
<h1> compréhension approfondie de JavaScript </H1>
</docy>
</html>
Nous savons que si vous ouvrez cette page via un navigateur, les scripts contenus dans la balise <cript> </cript> seront exécutés.
Voyons ensuite Console.log (ceci); Qui fait ce souligne?
Dans Google Chrome, nous voyons:
Dans Mozilla Firefox, nous voyons:
Nous voyons tous la fenêtre de sortie, donc la fenêtre et les fenêtres sont égales?
Ensuite notre test
La copie de code est la suivante:
<script type = "text / javascript" charset = "utf-8">
console.log (ceci);
console.log ('this == fenêtre?', this == fenêtre);
</cript>
Exécutez le code et sortez cette fenêtre == Window? True, qui signifie Window == fenêtre. Est-ce vraiment le cas?
Pour comprendre la relation entre eux, nous continuons à tester
La copie de code est la suivante:
<script type = "text / javascript" charset = "utf-8">
console.log ('this =', this);
console.log ('this == fenêtre?', this == fenêtre);
console.log ('window =', fenêtre);
console.log ('window =', fenêtre)
console.log ('fenêtre == fenêtre?', Window == fenêtre)
</cript>
Afficher la sortie du navigateur:
Google Chrome:
Mozilla Firefox:
À partir des résultats de sortie que nous pouvons déduire,
La copie de code est la suivante:
Ceci est un objet de fenêtre;
Ceci est également égal à un objet de fenêtre;
La fenêtre pointe également vers les objets de fenêtre;
La fenêtre est un pointage vers la fenêtre {}, qui est un objet fourni par le navigateur;
La fenêtre n'est pas égale à la fenêtre;
Pourquoi cela se produit-il?
Nous affichons la structure des objets de fenêtre dans la console du navigateur;
Il s'avère que l'objet Window contient certaines API implémentées par les fabricants de navigateurs, tels que la SessionStorage standard dans HTML5;
Il a également une propriété de fenêtre et la valeur de cette propriété pointe vers l'objet Window;
Ma compréhension: les objets de fenêtre servent les fabricants de navigateurs. Nous ne pouvons pas manipuler directement les propriétés des objets de fenêtre. Les API nouvellement ajoutées de la fenêtre seront reflétées dans l'objet Window;
Les propriétés que nous opérons sur la fenêtre seront reflétées dans l'objet de fenêtre.
Par exemple, définissez une fenêtre variable globale.a = 'aaa';
Tous les objets de JavaScript existent dans un environnement en cours d'exécution, qui est également un objet, appelé "objet de niveau supérieur". Cela signifie que tous les objets de JavaScript sont des subordonnés des "objets de niveau supérieur". Différents environnements de fonctionnement ont différents "objets de niveau supérieur". Dans l'environnement du navigateur, cet objet de niveau supérieur est un objet de fenêtre.
Toutes les variables globales de l'environnement du navigateur sont des propriétés des objets de fenêtre.
Les fenêtres peuvent être comprises comme un environnement de contexte JavaScriptContext.