Global object (グローバルオブジェクト)

グローバルオブジェクトは、グローバルスコープ上に常時存在するオブジェクトです。

JavaScript では、グローバルオブジェクトが常に定義されています。ウェブブラウザー上でスクリプトがグローバル変数を生成する時、グローバルオブジェクトのメンバーとして作成されます。 (Node.js ではこの限りではありません。) グローバルオブジェクトが実装するインターフェイスは、どのようなコンテキストでスクリプトが実行されているかによって変化します。例えば、

  • ウェブブラウザーでは、明示的にバックグランドタスクとして起動されるコードを除き、 Window がグローバルオブジェクトになります。ウェブにおける JavaScript コードのほとんどはこのケースに該当します。
  • Worker 内で実行されるコードでは WorkerGlobalScope オブジェクトがグローバルオブジェクトになります。
  • Node.js で実行されるスクリプトの場合、 global と呼ばれるオブジェクトがグローバルオブジェクトになります。

ブラウザー内の window オブジェクト

ブラウザー内では window オブジェクトがグローバルオブジェクトです。グローバル変数や関数はすべて、 window オブジェクトのプロパティとしてアクセスすることができます。

グローバル変数へのアクセス

js
var foo = "foobar";
foo === window.foo; // true を返す

グローバル変数 foo を定義した後、その値を window オブジェクトから、変数名である foo を使用し、グローバルオブジェクト window.foo のプロパティ名として直接アクセスすることができます。

解説

グローバル変数 foowindow オブジェクト内に、次のように格納されます。

js
foo: "foobar";

グローバル関数へのアクセス

js
function greeting() {
  console.log("Hi!");
}

window.greeting(); // ふつうに greeting(); を呼び出すのと同じ

上記の例では、グローバル関数が window オブジェクトの中にプロパティとしてどのように格納されるかを説明しています。 greeting というグローバル関数を作成し、 window オブジェクトを使用して呼び出します。

解説

グローバル関数 greetingwindow オブジェクトに次のように格納されています。

js
greeting: function greeting() {
  console.log("Hi!");
}