Baseline Widely available
ì ì globalThis
ìì±ìë ì¼ë°ì ì¼ë¡ ì ì ê°ì²´ì ì ì¬í ì ì this
ê°ì´ í¬í¨ë©ëë¤.
function canMakeHTTPRequest() {
return typeof globalThis.XMLHttpRequest === "function";
}
console.log(canMakeHTTPRequest());
// Expected output (in a browser): true
ê°
ì ì this
ê°ì²´ì
ëë¤.
ì¤ëªì°¸ê³ :
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
ì ëí´ ë¤ë¥¸ ê°ì ì ê³µí ì ììµëë¤.
ë§ì ìì§ìì globalThis
ë ì¤ì ì ì ê°ì²´ë¥¼ ëí 참조ì´ì§ë§ ì¹ ë¸ë¼ì°ì ë <iframe>
ê³¼ êµì°¨ ì°½ ë³´ì 문ì ë¡ ì¸í´ ì ì ê°ì²´ë¥¼ ê°ì¼ Proxy
를 ëì 참조í©ëë¤(ì§ì ì¡ì¸ì¤í ì ìì). ì¼ë°ì ì¸ ì¬ì©ìë ì°¨ì´ê° ìë¤ê³ ë´ë 무방íì§ë§, ììëë ê²ì´ ì¤ìí©ëë¤.
self
ë° global
ê³¼ ê°ì ë¤ë¥¸ ì ëª
í ì´ë¦ ì ìë¤ì 기존 ì½ëìì í¸íì± ë¬¸ì 를 ì°ë ¤í´ ê³ ë ¤ ëììì ì ì¸ëììµëë¤. ìì¸í ë´ì©ì ì¸ì´ ì ììì "NAMING" 문ì를 참조íì¸ì.
globalThis
ë 문ì ê·¸ëë¡ ì ì this
ê°ì
ëë¤. ê°ì²´ ìì´ í¸ì¶ëë ë¹ì격 í¨ìì this
ê°ê³¼ ê°ì ê°ì
ëë¤. ì¤í¬ë¦½í¸ì ì ì ë²ììì this
ì ê°ì´ê¸°ë í©ëë¤.
ì¼ë°ì ì¼ë¡ ì ì ê°ì²´ë ëª ìì ì¼ë¡ ì§ì í íìê° ììµëë¤. í´ë¹ ìì±ì ìëì¼ë¡ ì ì ë³ìë¡ ì¡ì¸ì¤í ì ììµëë¤.
console.log(window.Math === Math); // true
ê·¸ë¬ë ì ì ê°ì²´ì ëª ìì ì¼ë¡ ì ê·¼í´ì¼ íë í ê°ì§ ê²½ì°ë ì¼ë°ì ì¼ë¡ í´ë¦¬íì ìí´ ì ì ê°ì²´ì ìì± í ëì ëë¤.
globalThis
ì´ì ìë íê²½ì ëí ì ì ê°ì²´ë¥¼ ê°ì ¸ì¤ë ë°©ë² ì¤ ì ì¼íê² ë¯¿ìë§í êµì°¨ íë«í¼ ë°©ë²ì Function('return this')()
ì´ììµëë¤. ê·¸ë¬ë ì´ë¡ ì¸í´ ì¼ë¶ ì¤ì ìì CSP ìë°ì´ ë°ìíë¯ë¡ ìì±ìë ì´ì ê°ì ì¡°ê°ë³ ì ì를 ì¬ì©í©ëë¤(ìë core-js ìì¤).
function check(it) {
// Mathë 모ë íê²½ìì ì ìì¼ë¡ ì¡´ì¬íë ê²ì¼ë¡ ìë ¤ì ¸ ììµëë¤.
return it && it.Math === Math && it;
}
const globalObject =
check(typeof window === "object" && window) ||
check(typeof self === "object" && self) ||
check(typeof global === "object" && global) ||
// ì격 모ëìì ì¤íí ë undefined를 ë°íí©ëë¤.
(function () {
return this;
})() ||
Function("return this")();
ì ì ê°ì²´ë¥¼ ì»ì í ìë¡ì´ ì ìì ì ìí ì ììµëë¤. ì를 ë¤ì´ Intl
ì ëí 구íì ì¶ê°í©ëë¤.
if (typeof globalObject.Intl === "undefined") {
// No Intl in this environment; define our own on the global scope
Object.defineProperty(globalObject, "Intl", {
value: {
// Our Intl implementation
},
enumerable: false,
configurable: true,
writable: true,
});
}
globalThis
를 ì¬ì©í ì ìì¼ë¯ë¡ íê²½ ì ì²´ì ëí ì¶ê° ê²ìì´ ë ì´ì íìíì§ ììµëë¤.
if (typeof globalThis.Intl === "undefined") {
Object.defineProperty(globalThis, "Intl", {
value: {
// Our Intl implementation
},
enumerable: false,
configurable: true,
writable: true,
});
}
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4