globalThis

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.

전역 globalThis 속성에는 일반적으로 전역 객체와 유사한 전역 this 값이 포함됩니다.

시도해 보기

function canMakeHTTPRequest() {
  return typeof globalThis.XMLHttpRequest === "function";
}

console.log(canMakeHTTPRequest());
// Expected output (in a browser): true

전역 this 객체입니다.

Property attributes of globalThis
쓰기 가능가능
열거 가능불가능
설정 가능가능

참고: globalThis 속성은 구성 및 쓰기가 가능하므로 코드 작성자가 신뢰할 수 없는 코드를 실행할 때 숨길 수 있고 전역 객체 노출을 방지할 수 있습니다.

설명

역사적으로 전역 객체에 접근하려면 다른 JavaScript 환경에서 다른 구문이 필요했습니다. 웹에서는 window, self, frames를 사용할 수 있지만, Web Workers에서는 self만 동작합니다. Node.js에서는 이 중 어느 것도 작동하지 않으며 대신 global을 사용해야 합니다. this 키워드는 비엄격 모드에서 실행되는 함수 내부에서 사용될 수 있지만, this는 엄격 모드에서 실행되는 모듈 및 내부 함수에서 undefined가 됩니다. Function('return this')()를 사용하는 방법도 존재하지만, 브라우저의 CSP와 같이 eval()을 비활성화하는 환경에서는 이러한 방식으로 Function을 사용할 수 없습니다.

globalThis 속성은 환경에 무관하게 전역 this 값, 즉 전역 객체에 접근하는 표준 방법을 제공합니다. window, self 등 유사한 속성과는 다르게 window와 non-window 컨텍스트 모두에서의 동작을 보장합니다. 따라서 코드를 구동하는 환경을 모르더라도 전역 객체에 일관된 방식으로 접근할 수 있습니다. 이름을 기억하는 데 도움이 되도록 전역 범위에서 this 값은 globalThis라는 점만 기억하세요.

참고 : 브라우저와 Node의 경우에서 globalThis는 일반적으로 전역 객체와 동일한 개념입니다(즉, globalThis에 속성을 추가하면 전역 변수가 됨). 그러나 호스트는 전역 객체와 관련이 없는 globalThis에 대해 다른 값을 제공할 수 있습니다.

HTML과 WindowProxy

많은 엔진에서 globalThis는 실제 전역 객체를 대한 참조이지만 웹 브라우저는