まずソースコードを見てください。
コードコピーは次のとおりです。
<!doctype html>
<html>
<head>
<Meta charset = "utf-8" />
<Title> JavaScriptの詳細な理解</title>
<script type = "text/javascript" charset = "utf-8">
console.log(this);
</script>
</head>
<body>
<h1> JavaScriptの詳細な理解</h1>
</body>
</html>
ブラウザを介してこのページを開くと、<script> </script>タグに含まれるスクリプトが実行されることがわかります。
次に、console.log(this)を見てみましょう。これは誰を指しますか?
Google Chromeではわかります:
Mozilla Firefoxではわかります:
私たちは皆、出力ウィンドウを見るので、ウィンドウとウィンドウは等しいですか?
次にテスト
コードコピーは次のとおりです。
<script type = "text/javascript" charset = "utf-8">
console.log(this);
console.log( 'this == window?'、this == window);
</script>
コードを実行して出力==ウィンドウ?true、つまりウィンドウ==ウィンドウを意味します。これは本当にそうですか?
それらの間の関係を把握するために、私たちはテストを続けます
コードコピーは次のとおりです。
<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)
</script>
ブラウザの出力を表示します:
Google Chrome:
Mozilla Firefox:
出力の結果から、私たちは推測できる、
コードコピーは次のとおりです。
これはウィンドウオブジェクトです。
これは、ウィンドウオブジェクトにも等しくなります。
ウィンドウはウィンドウオブジェクトも指しています。
ウィンドウは、ブラウザによって提供されるオブジェクトであるウィンドウ{}を指すことです。
ウィンドウはウィンドウに等しくありません。
なぜこれが起こっているのですか?
ブラウザコンソール内のウィンドウオブジェクトの構造を表示します。
Windowオブジェクトには、HTML5の標準セッションストレージなど、ブラウザーメーカーによって実装されたいくつかのAPIが含まれていることがわかります。
また、ウィンドウプロパティがあり、このプロパティの値はウィンドウオブジェクトを指します。
私の理解:ウィンドウオブジェクトはブラウザメーカーにサービスを提供します。ウィンドウオブジェクトのプロパティを直接操作することはできません。新しく追加されたウィンドウのAPIは、ウィンドウオブジェクトに反映されます。
ウィンドウで動作するプロパティは、ウィンドウオブジェクトに反映されます。
たとえば、グローバル変数ウィンドウを定義します。a= 'aaa';
JavaScript内のすべてのオブジェクトは、「トップレベルオブジェクト」と呼ばれるオブジェクトでもある実行環境に存在します。これは、JavaScriptのすべてのオブジェクトが「トップレベルオブジェクト」の部下であることを意味します。さまざまなオペレーティング環境には、「トップレベルのオブジェクト」が異なります。ブラウザ環境では、このトップレベルのオブジェクトはウィンドウオブジェクトです。
すべてのブラウザ環境グローバル変数は、ウィンドウオブジェクトのプロパティです。
Windowsは、JavaScriptContextコンテキスト環境として理解できます。