🌏

JavaScriptのグローバルオブジェクト

2025/02/13に公開2

グローバルオブジェクトとは

すべてのスコープからアクセス可能なオブジェクト。
実行環境ごとに名称や提供されるAPIが異なる。

グローバルオブジェクトの種類

window(ブラウザ環境)

DOMやlocalStorageなど、ブラウザ特有のAPIを持つ。
また、window.alert()のようなブラウザの組み込み機能を提供。

global(Node.js環境)

processなどのNode.js特有のAPIを含む。

globalThis(共通のグローバルオブジェクト)

ES2020で導入された、環境に依存しないグローバルオブジェクトの統一的な参照。
ブラウザではglobalThis === window、Node.jsではglobalThis === globalとなる。

グローバルオブジェクトとグローバルスコープ

グローバルオブジェクトとグローバルスコープは厳密には異なる。
ブラウザ環境では、windowがグローバルスコープの変数や関数のコンテナとして機能するが、
Node.jsでは多くの標準ライブラリはグローバルオブジェクトに直接含まれておらず、require()やES Modules(import/export)を使って読み込む。

グローバルオブジェクトに含まれるものの例

共通(ブラウザwindow/Node.jsglobal

組み込みオブジェクト

  • Object: オブジェクトを扱う基本クラス
  • Array: 配列を扱うオブジェクト
  • Function: 関数を作成・実行するためのオブジェクト
  • Date: 日付や時間を管理・操作するオブジェクト
  • RegExp: 正規表現を扱うオブジェクト
  • Promise: 非同期処理を扱うオブジェクト
  • Map / Set: キーと値のペアやユニークな値の集合を管理
  • Symbol: ユニークな識別子を生成
  • BigInt: 超大きな整数を扱うためのデータ型
  • Math: 数学関数や定数を提供
  • JSON: オブジェクトとJSON文字列の変換
  • Error(および TypeError, SyntaxError など): エラーオブジェクト
  • Intl: 国際化(ロケール、通貨、日付フォーマット)関連の機能

ユーティリティ関数

  • setTimeout(fn, ms) / setInterval(fn, ms): 指定時間後に関数を実行(1回 / 繰り返し)
  • clearTimeout(id) / clearInterval(id): タイマーの解除
  • parseInt(str, base) / parseFloat(str): 文字列を整数 / 浮動小数点数に変換
  • isNaN(value) / isFinite(value): 値がNaN(非数)か、有限数かを判定
  • eval(str):文字列をJavaScriptとして評価

エンコード・デコード関数

  • encodeURI(str) / decodeURI(str): URL全体をエンコード / デコード
  • encodeURIComponent(str) / decodeURIComponent(str): URLの一部をエンコード / デコード

コンソールオブジェクト

  • console.log(value): 値をコンソールに出力

特殊値(グローバルに存在する定数)

  • NaN: Not-a-Number(計算結果が数値でない)
  • Infinity: 正の無限大(負の無限大は -Infinity
  • undefined: 値が未定義であることを示す

window(ブラウザ環境)固有

DOM関連オブジェクト

  • document: HTMLやDOM要素にアクセスするオブジェクト
  • window: ブラウザのウィンドウ全体を表すオブジェクト
  • history: ブラウザの履歴を管理
  • navigator: ユーザーのブラウザやOS情報を取得
  • location: 現在のURL情報を取得・変更
  • navigator.geolocation: ユーザーの位置情報を取得

Web API

  • fetch(url): ネットワークリクエストを送信し、データを取得(非同期)
  • localStorage / sessionStorage: クライアントサイドのデータ保存(永続 / 一時)
  • IndexedDB: 大量のデータを保存するためのデータベースAPI
  • WebSocket: 双方向通信を行うためのAPI
  • Event: イベントの処理を管理
  • addEventListener(type, fn) / removeEventListener(type, fn): イベントを登録 / 削除

ブラウザ専用の関数(ユーザーインタラクション)

  • alert(message): アラートダイアログを表示
  • confirm(message): OK/キャンセルの確認ダイアログを表示
  • prompt(message, defaultValue): ユーザーから文字列を入力させる
  • Notification: デスクトップ通知を送信

アニメーション & 描画API(グラフィック関連)

  • requestAnimationFrame(callback): 高速でスムーズなアニメーションを実行
  • cancelAnimationFrame(id): アニメーションのキャンセル
  • CanvasRenderingContext2D: <canvas> に2D描画を行うためのAPI
  • WebGLRenderingContext: <canvas> のWebGL描画
  • OffscreenCanvas: ワーカーでのCanvas描画を可能にする

global(Node.js環境)固有

Node.js用オブジェクト(環境・ファイル管理)

  • global: Node.js のグローバルオブジェクト
  • process: Node.js のプロセス情報(環境変数・終了コード管理)
  • Buffer: バイナリデータを扱うオブジェクト

Node.jsのモジュール関連

  • import/export: 外部モジュールを読み込む(ES Modules形式)
  • require(moduleName): 外部モジュールを読み込む(CommonJS形式)

標準ライブラリAPI(組み込みモジュール)

  • crypto: 暗号化・ハッシュ関数を提供
  • os: OSの情報取得(CPU・メモリなど)
  • util: ユーティリティ関数(デバッグ・データ変換など)
  • events: イベント駆動プログラミングをサポート
  • stream: ストリームデータ処理
  • zlib: 圧縮・解凍(gzip, deflate)
  • dns: ドメイン名解決(DNSルックアップ)

Node.jsのイベントループ関連

  • setImmediate(fn): 次のイベントループで即時実行
  • process.nextTick(fn): 現在のイベントループの直後に実行

Node.jsのWorker関連

  • worker_threads: マルチスレッド処理
  • cluster: マルチプロセス処理(Node.jsを複数のCPUコアで実行)

Discussion