Globalオブジェクト(グローバルオブジェクト)とは?
「グローバル変数」や「グローバル関数」を管理するために、JavaScriptエンジンが自動生成する便宜的なオブジェクトです。
Globalオブジェクトの特徴
- 通常のオブジェクトと同様に、インスタンス化することはできません。
- Globalオブジェクトのメンバを呼び出せるわけではありません。
Globalオブジェクトの種類
素のグローバルオブジェクト対してブラウザやNode.jsが別途追加でプロパティやメソッドを追加したりしています。alertメソッドなんかはブラウザにしかなくNode.jsにはないですからね。
コアオブジェクト(ECMAScriptに定義されている仕様)
- parseIntメソッド
詳しくは、MDNの「組み込みオブジェクト(ビルドインオブジェクト)」のページに記載があります。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects
ブラウザが付け足したもの
- alertメソッド
- consoleオブジェクト
ドキュメント(APIリファレンス)
https://developer.mozilla.org/ja/docs/Web/API
alertメソッドであればWindowというAPIの中に記載がある。consoleであればConsole APIを見れば仕様が載っている。
Node.jsが付け足したもの
MDNではなくNode.jsの公式ページのGlobalsというページに記載があります。
https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#global-objects
グローバルオブジェクトの中身を見るには?
以下の変数を使います。これもグローバルオブジェクトの一つです。
1 |
globalThis |
グローバルでどこでも使用することができるプロパティが一覧で出てきます。
ブラウザでは
以下のオブジェクトにアクセスするだけでグローバルオブジェクトにアクセスできます。
1 2 3 |
window self frames |
Node.jsでは
1 |
global |
グローバルオブジェクトにプロパティを定義できるか?
結論から言えばできます。以下のように記述します。
1 |
globalThis.orange = "オレンジ";も |
varを使う
変数宣言にvarを使うと自動的にグローバルオブジェクトに追加されます。(letやconstなどは追加されないです。)
1 |
var orange = "オレンジ"; |
ただし、関数の中で定義した場合は追加されないので注意です。
関数宣言
以下の関数宣言をした場合でもグローバルオブジェクトに自動で追加されます。
1 2 3 |
function orange () { return "オレンジ"; } |
グローバル変数や、関数の特徴
特定の関数配下に属さないトップレベルの変数や関数のことです。
単に下記のように、宣言することが可能です。
1 2 |
変数名 関数名(引数,…); |
この記事へのコメントはありません。