Global object (グローバルオブジェクト)
グローバルオブジェクトは JavaScript において、グローバルスコープを表すオブジェクトです。
メモ: グローバルスコープ内のオブジェクトであるグローバルに利用可能なオブジェクトは、グローバルオブジェクトと呼ばれることもありますが、厳密に言えば、環境ごとにグローバルオブジェクトは 1 つしか存在しません。
どの JavaScript 環境においても、常にグローバルオブジェクトが定義されています。グローバルオブジェクトのインターフェイスは、スクリプトが実行されている実行コンテキストによって異なります。例を示します。
- ウェブブラウザーでは、明示的にバックグランドタスクとして起動されるコードを除き、
Windowがグローバルオブジェクトになります。ウェブにおける JavaScript コードのほとんどはこのケースに該当します。 Worker内で実行されるコードではWorkerGlobalScopeオブジェクトがグローバルオブジェクトになります。- Node.js で実行されるスクリプトの場合、
globalと呼ばれるオブジェクトがグローバルオブジェクトになります。
globalThis グローバルプロパティを使用すると、現在の環境に関係なくグローバルオブジェクトにアクセスすることができます。
スクリプトの最上位にある var 文および 関数宣言 は、グローバルオブジェクトのプロパティを作成します。一方、let および const 宣言は、グローバルオブジェクトのプロパティを作成することはありません。
グローバルオブジェクトのプロパティは、自動的にグローバルスコープに追加されます。
JavaScriptでは、グローバルオブジェクトは常に自分自身への参照を保持しています。
js
console.log(globalThis === globalThis.globalThis); // true (どこでも)
console.log(window === window.window); // true (ブラウザーで)
console.log(self === self.self); // true (ブラウザーまたはウェブワーカーで)
console.log(frames === frames.frames); // true (ブラウザーで)
console.log(global === global.global); // true (Node.js で)