概要: このチュートリアルでは、JavaScriptのglobalThis
オブジェクトについて学習します。
JavaScript globalThisオブジェクトの紹介
ES2020では、さまざまな環境でグローバルオブジェクトにアクセスするための標準的な方法を提供するglobalThis
オブジェクトが導入されました。
従来、JavaScriptのグローバルオブジェクトは、環境によって異なる名前を持っていました。
Webブラウザでは、グローバルオブジェクトはwindow
またはframes
です。
しかし、Web Workers APIにはブラウジングコンテキストがないため、window
オブジェクトがありません。そのため、Web Workers APIはグローバルオブジェクトとしてself
を使用します。
一方、Node.jsはグローバルオブジェクトを参照するためにglobal
キーワードを使用します。
環境 | グローバルオブジェクト |
---|---|
Webブラウザ | this / window / frames |
Web Workers | self |
Node.js | Node.js |
global
さまざまな環境で動作し、グローバルオブジェクトにアクセスする必要があるJavaScriptコードを記述する場合、window
、frames
、self
、global
などの異なる構文を使用する必要がありました。
これを標準化するために、ES2020では、すべての環境で使用可能なglobalThis
が導入されました。
const canFetch = typeof globalThis.fetch === 'function';
console.log(canFetch);
Code language: JavaScript (javascript)
たとえば、次のコードは、現在の環境がFetch APIをサポートしているかどうかを確認します。
このコードは、fetch()
関数がグローバルオブジェクトのプロパティであるかどうかを確認します。Webブラウザでは、globalThis
はwindow
オブジェクトです。したがって、このコードを最新のWebブラウザで実行すると、canFetch
はtrue
になります。
globalThis === window
Code language: JavaScript (javascript)
次のコードは、Webブラウザでtrueを返します
true
Code language: JavaScript (javascript)
出力
- まとめ
globalThis
オブジェクトを使用します。