먼저 소스 코드를보십시오.
코드 사본은 다음과 같습니다.
<! doctype html>
<html>
<헤드>
<meta charset = "utf-8" />
<title> JavaScript </title>에 대한 심층적 인 이해
<script type = "text/javaScript"charset = "utf-8">
Console.log (this);
</스크립트>
</head>
<body>
<H1> JavaScript에 대한 심층적 인 이해 </h1>
</body>
</html>
브라우저를 통해이 페이지를 열면 <cript> </script> 태그에 포함 된 스크립트가 실행된다는 것을 알고 있습니다.
그런 다음 Console.log (this)를 살펴 보겠습니다. 이 시점은 누구에게?
Google Chrome에서는 다음을 볼 수 있습니다.
Mozilla Firefox에서 우리는 다음을 볼 수 있습니다.
우리는 모두 출력 창이 봅니다. 창과 창도 같습니까?
다음으로 우리의 시험
코드 사본은 다음과 같습니다.
<script type = "text/javaScript"charset = "utf-8">
Console.log (this);
Console.log ( 'this == Window?', this == Window);
</스크립트>
코드를 실행하고 this == Window? true, Window == Window를 의미합니다. 이것이 사실입니까?
그들 사이의 관계를 알아 내기 위해 우리는 계속 테스트합니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript"charset = "utf-8">
Console.log ( 'this =', this);
Console.log ( 'this == Window?', this == Window);
console.log ( 'window =', window);
Console.log ( 'Window =', Window)
Console.log ( 'Window == Window?', Window == Window)
</스크립트>
브라우저 출력보기 :
Chrome :
Mozilla Firefox :
우리가 추론 할 수있는 출력 결과에서
코드 사본은 다음과 같습니다.
이것은 창 객체입니다.
이것은 또한 창 객체와 동일합니다.
창은 또한 창 객체를 가리 킵니다.
창은 창을 가리키는 것입니다. {}는 브라우저에서 제공하는 객체입니다.
창은 창과 같지 않습니다.
왜 이런 일이 일어나고 있습니까?
브라우저 콘솔에서 창 객체의 구조를 봅니다.
Window 객체에는 HTML5의 표준 세션 스토리지와 같은 브라우저 제조업체가 구현 한 일부 API가 포함되어 있습니다.
또한 창 속성이 있으며이 속성의 값은 창 객체를 가리 킵니다.
내 이해 : 창 객체는 브라우저 제조업체에 서비스를 제공합니다. 우리는 창 객체의 속성을 직접 조작 할 수 없습니다. 새로 추가 된 창의 API는 창 객체에 반영됩니다.
창에서 작동하는 속성은 창 객체에 반영됩니다.
예를 들어, 전역 변수 창을 정의합니다 .a = 'aaa';
JavaScript의 모든 객체는 실행중인 환경에 존재하며 "최상위 객체"라고도합니다. 이는 JavaScript의 모든 객체가 "최상위 객체"의 부하 직원임을 의미합니다. 다른 운영 환경마다 "최상위 객체"가 다릅니다. 브라우저 환경 에서이 최상위 객체는 창 객체입니다.
모든 브라우저 환경 글로벌 변수는 창 객체의 속성입니다.
Windows는 JavaScriptContext 컨텍스트 환경으로 이해할 수 있습니다.