Baseline Widely available
å
¨å±å±æ§ globalThis
å
å«å
¨å±ç this
å¼ï¼ç±»ä¼¼äºå
¨å±å¯¹è±¡ï¼global objectï¼ã
function canMakeHTTPRequest() {
return typeof globalThis.XMLHttpRequest === "function";
}
console.log(canMakeHTTPRequest());
// Expected output (in a browser): true
å¯å æ¯ å¯æä¸¾ å¦ å¯é
ç½® æ¯ è¯æ³ æè¿°
å¨ä»¥åï¼ä»ä¸åç JavaScript ç¯å¢ä¸è·åå
¨å±å¯¹è±¡éè¦ä¸åçè¯å¥ãå¨ Web ä¸ï¼å¯ä»¥éè¿ window
ãself
æè
frames
åå°å
¨å±å¯¹è±¡ï¼ä½æ¯å¨ Web Workers ä¸ï¼åªæ self
å¯ä»¥ãå¨ Node.js ä¸ï¼å®ä»¬é½æ æ³è·åï¼å¿
é¡»ä½¿ç¨ global
ã
卿¾æ£æ¨¡å¼ä¸ï¼å¯ä»¥å¨å½æ°ä¸è¿å this
æ¥è·åå
¨å±å¯¹è±¡ï¼ä½æ¯å¨ä¸¥æ ¼æ¨¡å¼å模åç¯å¢ä¸ï¼this
ä¼è¿å undefined
ãä½ ä¹å¯ä»¥ä½¿ç¨ Function('return this')()
ï¼ä½é£äºç¦ç¨eval()
çç¯å¢ï¼å¦å¨æµè§å¨ä¸çCSPï¼ä¸å
è®¸è¿æ ·ä½¿ç¨Function
ã
globalThis
æä¾äºä¸ä¸ªæ åçæ¹å¼æ¥è·åä¸åç¯å¢ä¸çå
¨å± this
对象ï¼ä¹å°±æ¯å
¨å±å¯¹è±¡èªèº«ï¼ãä¸å window
æè
self
è¿äºå±æ§ï¼å®ç¡®ä¿å¯ä»¥å¨ææ çªå£çåç§ç¯å¢ä¸æ£å¸¸å·¥ä½ãæä»¥ï¼ä½ å¯ä»¥å®å¿çä½¿ç¨ globalThis
ï¼ä¸å¿
æ
å¿å®çè¿è¡ç¯å¢ã为便äºè®°å¿ï¼ä½ åªéè¦è®°ä½ï¼å
¨å±ä½ç¨åä¸ç this
å°±æ¯ globalThis
ã
å¨å¾å¤å¼æä¸ï¼ globalThis
被认为æ¯çå®çå
¨å±å¯¹è±¡çå¼ç¨ï¼ä½æ¯å¨æµè§å¨ä¸ï¼ç±äº iframe 以åè·¨çªå£å®å
¨æ§çèèï¼å®å®é
å¼ç¨çæ¯çå®å
¨å±å¯¹è±¡ï¼ä¸å¯ä»¥è¢«ç´æ¥è®¿é®ï¼ç Proxy
代çãå¨é常çåºç¨ä¸ï¼å¾å°ä¼æ¶åå°ä»£çä¸å¯¹è±¡æ¬èº«çåºå«ï¼ä½æ¯ä¹éè¦å 以注æã
并没æéç¨ä¸äºæ´å¸¸è§çå½åæ¹å¼ï¼å¦ self
å global
ï¼è¿æ¯ä¸ºäºé¿å
å½±åç°å代ç çå
¼å®¹æ§ãæ´å¤ç¸å
³ä¿¡æ¯å¯ä»¥æ¥ç language proposal's "naming" document ã
å¨ globalThis
ä¹åï¼è·åæä¸ªå
¨å±å¯¹è±¡çå¯ä¸æ¹å¼å°±æ¯ Function('return this')()
ï¼ä½æ¯è¿å¨æäºæ
åµä¸ä¼è¿å CSP è§åï¼æä»¥ï¼es6-shim 使ç¨äºç±»ä¼¼å¦ä¸çæ¹å¼ï¼
var getGlobal = function () {
if (typeof self !== "undefined") {
return self;
}
if (typeof window !== "undefined") {
return window;
}
if (typeof global !== "undefined") {
return global;
}
throw new Error("unable to locate global object");
};
var globals = getGlobal();
if (typeof globals.setTimeout !== "function") {
// æ¤ç¯å¢ä¸æ²¡æ setTimeout æ¹æ³ï¼
}
使¯æäº globalThis
ä¹åï¼åªéè¦ï¼
if (typeof globalThis.setTimeout !== "function") {
// æ¤ç¯å¢ä¸æ²¡æ setTimeout æ¹æ³ï¼
}
è§è æµè§å¨å
¼å®¹æ§
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