Đối tượng toàn cục

Đối tượng toàn cục trong JavaScript là một object đại diện cho global scope.

Note: Các đối tượng có sẵn toàn cục — là các đối tượng trong global scope — đôi khi cũng được gọi là "đối tượng toàn cục", nhưng về mặt chính xác, chỉ có một đối tượng toàn cục cho mỗi môi trường.

Trong mỗi môi trường JavaScript, luôn có một đối tượng toàn cục được định nghĩa. Giao diện của đối tượng toàn cục phụ thuộc vào ngữ cảnh thực thi mà script đang chạy. Ví dụ:

  • Trong trình duyệt web, bất kỳ code nào mà script không khởi động cụ thể như một tác vụ nền đều có Window là đối tượng toàn cục của nó. Đây là phần lớn code JavaScript trên Web.
  • Code chạy trong Worker có đối tượng WorkerGlobalScope là đối tượng toàn cục của nó.
  • Các script chạy trong Node.js có một đối tượng được gọi là global là đối tượng toàn cục của chúng.

Thuộc tính toàn cục globalThis cho phép truy cập đối tượng toàn cục bất kể môi trường hiện tại.

Các câu lệnh varkhai báo hàm ở cấp độ đầu của một script tạo ra các thuộc tính của đối tượng toàn cục. Mặt khác, khai báo letconst không bao giờ tạo ra các thuộc tính của đối tượng toàn cục.

Các thuộc tính của đối tượng toàn cục được tự động thêm vào global scope.

Trong JavaScript, đối tượng toàn cục luôn giữ một tham chiếu đến chính nó:

js
console.log(globalThis === globalThis.globalThis); // true (ở mọi nơi)
console.log(window === window.window); // true (trong trình duyệt)
console.log(self === self.self); // true (trong trình duyệt hoặc Web Worker)
console.log(frames === frames.frames); // true (trong trình duyệt)
console.log(global === global.global); // true (trong Node.js)