Primeiro, olhe para o nosso código -fonte.
A cópia do código é a seguinte:
<! Doctype html>
<html>
<head>
<meta charset = "utf-8" />
<title> Compreensão profunda do JavaScript </title>
<script type = "text/javascript" charset = "utf-8">
console.log (this);
</script>
</head>
<Body>
<H1> Compreensão profunda do JavaScript </h1>
</body>
</html>
Sabemos que, se você abrir esta página através de um navegador, os scripts contidos na tag <cript> </script> serão executados.
Então vamos dar uma olhada no console.log (isto); Para quem isso faz isso?
No Google Chrome, vemos:
Em Mozilla Firefox, vemos:
Todos nós vemos a janela de saída, então a janela e as janelas são iguais?
Em seguida, nosso teste
A cópia do código é a seguinte:
<script type = "text/javascript" charset = "utf-8">
console.log (this);
console.log ('this == Window?', esta == janela);
</script>
Execute o código e saia esta == janela? True, o que significa janela == janela. Esse é realmente o caso?
Para descobrir a relação entre eles, continuamos a testar
A cópia do código é a seguinte:
<script type = "text/javascript" charset = "utf-8">
console.log ('this =', este);
console.log ('this == Window?', esta == janela);
console.log ('window =', janela);
console.log ('window =', janela)
console.log ('janela == janela?', janela == janela)
</script>
Visualizar saída do navegador:
Google Chrome:
Mozilla Firefox:
Dos resultados da saída que podemos deduzir,
A cópia do código é a seguinte:
Este é um objeto de janela;
Isso também é igual a um objeto de janela;
A janela também aponta para objetos de janela;
A janela está apontando para a janela {}, que é um objeto fornecido pelo navegador;
A janela não é igual à janela;
Por que isso está acontecendo?
Vemos a estrutura dos objetos de janela no console do navegador;
Acontece que o objeto de janela contém algumas APIs implementadas pelos fabricantes de navegadores, como o Sessor SessionStorage no HTML5;
Ele também possui uma propriedade de janela e o valor dessa propriedade aponta para o objeto da janela;
Meu entendimento: objetos de janela servem fabricantes de navegador. Não podemos manipular diretamente as propriedades dos objetos de janela. As APIs recém -adicionadas da janela serão refletidas no objeto da janela;
As propriedades que operamos na janela serão refletidas no objeto da janela.
Por exemplo, defina uma janela variável global.A = 'aaa';
Todos os objetos no JavaScript existem em um ambiente de corrida, que também é um objeto, chamado de "objeto de nível superior". Isso significa que todos os objetos no JavaScript são subordinados de "objetos de nível superior". Diferentes ambientes operacionais têm diferentes "objetos de nível superior". No ambiente do navegador, esse objeto de nível superior é um objeto de janela.
Todas as variáveis globais do ambiente do navegador são propriedades dos objetos de janela.
O Windows pode ser entendido como um ambiente de contexto JavaScriptContext.