[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Global Object

uupaa edited this page Nov 11, 2017 · 1 revision

このエントリでは、WebApp/2 に使われている Global Object を取得する Idiom(トリック) について解説しています。

WebApp/2 は Browser, Worker, Node.js, NW.js, Electron など様々な環境で動作します。 この様々な環境で動作する JavaScript を実現するためには、Global Object を獲得し、その環境で利用可能なAPIを知る必要があります。

WebApp/2 GlobalObject Idiom

様々な環境で Global Object を取得する Idiom を WebApp/2 GlobalObject Idiom と呼びます。

const GlobalObject = (typeof self !== "undefined") ? self : global;

このコードは環境によって次のように解釈され、各環境における Global Object を獲得します。

platform self global expression and result
Browser window (true) ? window : undefined → window
ESModules window (true) ? window : undefined → window
Worker scope (true) ? scope : undefined → WorkerGlobalScope
Node.js global (false) ? undefined : global → global
Electron
main
global (false) ? undefined : global → global
Electron
render
window global (true) ? window : undefined → window
NW.js
node
context
global global (true) ? global : global → global
NW.js
browser
context
window (true) ? window : undefined → window