全域性物件

JavaScript 中的全域性物件是一個物件,它代表全域性作用域

注意:全域性可用的物件,即全域性作用域中的物件,有時也被稱為全域性物件,但嚴格來說,每個環境中只有一個全域性物件。

在每個 JavaScript 環境中,總會定義一個全域性物件。全域性物件的介面取決於指令碼執行的執行上下文。例如:

  • 在網頁瀏覽器中,指令碼沒有特別啟動為後臺任務的任何程式碼,都將Window 作為其全域性物件。這是 Web 上絕大多數 JavaScript 程式碼的情況。
  • Worker 中執行的程式碼,以WorkerGlobalScope 物件作為其全域性物件。
  • Node.js 下執行的指令碼,將一個名為 global 的物件作為其全域性物件。

全域性屬性 globalThis 允許在不考慮當前環境的情況下訪問全域性物件。

指令碼頂層的 var 語句和 函式宣告會建立全域性物件的屬性。另一方面,letconst 宣告永遠不會建立全域性物件的屬性。

全域性物件的屬性會自動新增到全域性作用域

在 JavaScript 中,全域性物件始終持有對自身的引用。

js
console.log(globalThis === globalThis.globalThis); // true (everywhere)
console.log(window === window.window); // true (in a browser)
console.log(self === self.self); // true (in a browser or a Web Worker)
console.log(frames === frames.frames); // true (in a browser)
console.log(global === global.global); // true (in Node.js)