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


グローバルオブジェクト
すべてのオブジェクトを表す唯一の最上位オブジェクトで、通常はBrowser-sideでwindow、Server-side(Node.js)でglobalを表します.
// in browser console
this === window // true

// in Terminal
node
this === global // true
グローバルオブジェクトは、コントロールが実行コンテキストに入る前に作成され、constructorがないため、new演算子を使用して再作成することはできません.
つまり、開発者がグローバルオブジェクトを作成することはできません.
グローバルオブジェクトにはグローバル範囲があります.
グローバルオブジェクトのサブオブジェクトを使用する場合、グローバルオブジェクトの技術は省略できます.
例えば、documentオブジェクトは、グローバルオブジェクトwindowのサブオブジェクトであり、window.document…として記述することができるが、一般にグローバルオブジェクトの記述は省略される.
document.getElementById('foo').style.display = 'none';
// window.document.getElementById('foo').style.display = 'none';
グローバルオブジェクトには、グローバル変数(Global variable)がpropertyとして使用されます.
すなわち、グローバル変数はグローバルオブジェクトのpropertyである.
var ga = 'Global variable';
console.log(ga);
console.log(window.ga);
グローバル領域に宣言された関数は、グローバルオブジェクトのプロパティとしてアクセスすることもできます.すなわち、グローバル関数はグローバルオブジェクトの方法である.
function foo() {
  console.log('invoked!');
}
window.foo();
標準Built-inオブジェクトもグローバルオブジェクトのサブオブジェクトです.(グローバルオブジェクトのプロパティ、メソッド)
グローバルオブジェクトのサブオブジェクトを使用する場合は、グローバルオブジェクトのスキルを省略できますので、標準として構築されたオブジェクトでもグローバルオブジェクトのスキルを省略できます.
// window.alert('Hello world!');
alert('Hello world!');
Reference
https://poiemaweb.com/js-global-object