全域性物件
JavaScript 中的全域性物件是一個物件,它代表全域性作用域。
注意:全域性可用的物件,即全域性作用域中的物件,有時也被稱為全域性物件,但嚴格來說,每個環境中只有一個全域性物件。
在每個 JavaScript 環境中,總會定義一個全域性物件。全域性物件的介面取決於指令碼執行的執行上下文。例如:
- 在網頁瀏覽器中,指令碼沒有特別啟動為後臺任務的任何程式碼,都將
Window作為其全域性物件。這是 Web 上絕大多數 JavaScript 程式碼的情況。 - 在
Worker中執行的程式碼,以WorkerGlobalScope物件作為其全域性物件。 - 在Node.js 下執行的指令碼,將一個名為
global的物件作為其全域性物件。
全域性屬性 globalThis 允許在不考慮當前環境的情況下訪問全域性物件。
指令碼頂層的 var 語句和 函式宣告會建立全域性物件的屬性。另一方面,let 和 const 宣告永遠不會建立全域性物件的屬性。
全域性物件的屬性會自動新增到全域性作用域。
在 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)