まずソースコードを見てください。 コードをコピーします コードは次のとおりです: コンソール.ログ(これ); </頭> <br> <br> </本文> <br> </html><br> <br><br> <br>このページがブラウザーで開かれると、<script>/script> に含まれるスクリプトが実行されることがわかっています。 <br>それでは console.log(this) を見てみましょう。これは誰を指しているのでしょうか? <br> <br>Google Chrome では次のように表示されます:<br> </div> <p> </p>Mozilla Firefox では次のようになります:<p> </p> <p></p> <p>出力ウィンドウを見たことがありますが、このウィンドウはウィンドウと同じでしょうか? <img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659313.jpg"> </p>次はテストです<p> </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659324.jpg"></p> <p>コードをコピーします</p> <p></p> コードは次のとおりです:<p></p> <div class="codetitle"> <span> <script type="text/javascript" charset="utf-8"> コンソール.ログ(これ); console.log('this == window ? ', this == window); </スクリプト> <a style="CURSOR: pointer" data="89659" class="copybut" id="copybut89659" onclick="doCopy('code89659')"> <u></u> </a>コードを実行して、 == window ?true を出力します。これは、 Window== window を意味します。これは本当にそうなのでしょうか? </span> </div> <div class="codebody" id="code89659">それらの間の関係を理解するために、私たちはテストを続けました <br> <br><br><br><br> </div>コードをコピーします<p><br> コードは次のとおりです:</p> <p></p> <script type="text/javascript" charset="utf-8"> console.log('this = ', this); console.log('this == window ?', this == window); console.log('ウィンドウ = ', ウィンドウ); console.log('ウィンドウ = ', ウィンドウ) <p> console.log('ウィンドウ == ウィンドウ ?', ウィンドウ == ウィンドウ) </p> <div class="codetitle"> </スクリプト> <span> <a style="CURSOR: pointer" data="67633" class="copybut" id="copybut67633" onclick="doCopy('code67633')"><u> </u>ブラウザの出力を見てください:</a> </span>Google Chrome:</div> <div class="codebody" id="code67633"> <br><br><br> Mozilla Firefox : <br> <br> <br><br><br> </div> 出力結果から推測できるのは、<p> </p> <p><br></p> <p>コードをコピーします<img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659325.jpg"><br><br> コードは次のとおりです:</p> <p><img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659326.jpg"> これは Window オブジェクトを指します。 これも window オブジェクト <br> と同じです。 window も Window オブジェクトを指します。 Window は、ブラウザによって提供されるオブジェクトである Window{} を指します。 ウィンドウはウィンドウ </p> と等しくありません。 <p><br> </p> <p>なぜこのようなことが起こっているのでしょうか? </p> <p>ブラウザ コンソールで Window オブジェクトの構造を表示します。</p> <p><img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659327.jpg"><br> </p> <p><img alt="" src="http://files.jb51.net/file_images/article/201411/201411121659328.jpg"></p> <p>Window オブジェクトには、HTML5 の標準 sessionStorage など、ブラウザの製造元によって実装されたいくつかの API が含まれていることが判明しました。 これには window 属性もあり、この属性の値は Window オブジェクトを指します。 私の理解: Window オブジェクトはブラウザの製造元に提供されます。Window オブジェクトのプロパティを直接操作することはできません。Window によって追加された新しい API は window オブジェクトに反映されます。<br> ウィンドウ上で操作するプロパティは、Window オブジェクトに反映されます。 <br> たとえば、グローバル変数 window.a = 'aaa';<br> を定義します。 <br>すべての JavaScript オブジェクトは実行環境内に存在します。この実行環境自体も「トップレベル オブジェクト」と呼ばれるオブジェクトです。これは、JavaScript のすべてのオブジェクトが「トップレベル オブジェクト」に従属することを意味します。実行環境が異なれば、「トップレベル オブジェクト」も異なります。ブラウザ環境では、このトップレベル オブジェクトはウィンドウ オブジェクトです。 </p> <p>ブラウザ環境のすべてのグローバル変数は、ウィンドウ オブジェクトのプロパティです。 </p> <p>Window は JavaScriptContext コンテキスト環境として理解できます。 </p>