Global 对象属性和方法
Global
在 JavaScript 中什么是全局对象?
- 简单来说,在 JavaScript 中,有那么一个对象,它的所有属性可以在程序中的任何地方调用、访问,并且所有在全局创建的变量常量都会绑定在这个对象上,那么这一个对象就是全局对象。
- 全局对象只是一个对象,它不是类,它没有构造函数,也无法实例化一个新的全局对象,在一个程序中有且只有一个全局对象。
- 真实的全局对象是不可以被直接访问的,通过关键字可以引用全局对象,被引用的是全局对象的代理,虽然真实全局对象和全局对象代理有所区别,但在平时使用中,可以直接把引用的全局对象代理当作真实的全局对象使用。
- 在浏览器环境中,JavaScript 的全局对象就是 Window 对象。在浏览器中运行 JavaScript ,全局对象会和 window 对象结合,相当全局对象于寄生 window 对象,可以通过 window 对象访问全局对象的所有属性。
- 在node.js 环境中,JavaScript 的全局对象是 Global 对象。在 node.js 环境中,可以通过 global 对象访问全局对象的所有属性。
- 其他环境,比如微信小程序等环境,这种也可以看作一个浏览器,不过这个浏览器通过删减一些不用的属性再添加或修改一些自定义的属性变成一个新的浏览器环境,但其核心还是没有变化的。当然,这种浏览器环境的全局对象同样也是 Window 对象。
不同 JavaScript 环境中怎么获取全局对象?
由于在 JavaScript 中,全局对象不是任何对象的属性,它没有自己的名称,但在顶层 JavaScript 中,大部分情况下可以使用关键字 this、window 引用全局对象(node.js 环境中不可以,其宿主与浏览器环境不同)。
关于使用关键字引用全局对象,下面整理了一个表格,可以进行查看:
/* ; 下表中数据含意: ; g : 表示输出全局对象 ; - 浏览器:window(含各内置对象、本地对象、BOM、DOM) ; - 小程序:window(含部分内置对象、部分本地对象、一些自定义对象、少量BOM、极少DOM) ; - node :全局对象(含各内置对象、无window、无DOM、极少极少BOM) ; n : 表示其他非全局对象的对象(node 中,全局this为空对象,准确说应该是 module.exports。函数中的this为全局对象 global) ; / : 表示输出 not defined ---------------------------------------------------------------- ; : IE : 正常浏览器 : node : 小程序 ; ;--------------------------------------------------------------- ;this : g : g : n : g ; ;self : g : g : / : g ; ;window : g : g : / : g ; ;global : / : / : g : n ; ;globalTthis : / : g : g : / ; ;top : g : g : / : g ; ;parent : g : g : / : g ; ;frames : g : g : / : / ; ---------------------------------------------------------------- */
各浏览器中全局对象的属性数量:
通过测试,得到市面上比较流行的浏览器在空页面时全局对象的属性的数量(大概数量,同样浏览器不同版本都会有所不同):
常见浏览器:
- google:960+
- opera:950+
- firefox:810+
- safari:760+
- 360:920+
- edge:670+
- ie-11:470+
- ie-10:410+
- ie-9:320+
其他 Javascript 环境:
- 微信小程序:180+
- node:70+
全局对象的属性:
由于不同环境全局对象的属性都不尽相同,甚至同一个环境不同版本的全局对象属性都有不同,下面主要列出 google 浏览器( 版本 83.x+) 和 node.js( 版本 14.x+)的全局对象所有属性:
浏览器中的全局对象的属性:
// google 浏览器中的 Object.getOwnPropertyDescriptors(globalThis) Infinity: {value: Infinity, writable: false, enumerable: false, configurable: false} $: {writable: true, enumerable: false, configurable: true, value: ƒ} $0: {value: undefined, writable: true, enumerable: false, configurable: true} $1: {value: undefined, writable: true, enumerable: false, configurable: true} $2: {value: undefined, writable: true, enumerable: false, configurable: true} $3: {value: undefined, writable: true, enumerable: false, configurable: true} $4: {value: undefined, writable: true, enumerable: false, configurable: true} $$: {writable: true, enumerable: false, configurable: true, value: ƒ} $_: {value: undefined, writable: true, enumerable: false, configurable: true} $x: {writable: true, enumerable: false, configurable: true, value: ƒ} AbortController: {writable: true, enumerable: false, configurable: true, value: ƒ} AbortSignal: {writable: true, enumerable: false, configurable: true, value: ƒ} AbsoluteOrientationSensor: {writable: true, enumerable: false, configurable: true, value: ƒ} Accelerometer: {writable: true, enumerable: false, configurable: true, value: ƒ} AnalyserNode: {writable: true, enumerable: false, configurable: true, value: ƒ} Animation: {writable: true, enumerable: false, configurable: true, value: ƒ} AnimationEffect: {writable: true, enumerable: false, configurable: true, value: ƒ} AnimationEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} ApplicationCache: {writable: true, enumerable: false, configurable: true, value: ƒ} ApplicationCacheErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Array: {writable: true, enumerable: false, configurable: true, value: ƒ} ArrayBuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} Atomics: {value: Atomics, writable: true, enumerable: false, configurable: true} Attr: {writable: true, enumerable: false, configurable: true, value: ƒ} Audio: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioBuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioBufferSourceNode: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioContext: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioDestinationNode: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioListener: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioNode: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioParam: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioParamMap: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioProcessingEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioScheduledSourceNode: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioWorklet: {writable: true, enumerable: false, configurable: true, value: ƒ} AudioWorkletNode: {writable: true, enumerable: false, configurable: true, value: ƒ} AuthenticatorAssertionResponse: {writable: true, enumerable: false, configurable: true, value: ƒ} AuthenticatorAttestationResponse: {writable: true, enumerable: false, configurable: true, value: ƒ} AuthenticatorResponse: {writable: true, enumerable: false, configurable: true, value: ƒ} BackgroundFetchManager: {writable: true, enumerable: false, configurable: true, value: ƒ} BackgroundFetchRecord: {writable: true, enumerable: false, configurable: true, value: ƒ} BackgroundFetchRegistration: {writable: true, enumerable: false, configurable: true, value: ƒ} BarProp: {writable: true, enumerable: false, configurable: true, value: ƒ} BarcodeDetector: {writable: true, enumerable: false, configurable: true, value: ƒ} BaseAudioContext: {writable: true, enumerable: false, configurable: true, value: ƒ} BatteryManager: {writable: true, enumerable: false, configurable: true, value: ƒ} BeforeInstallPromptEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} BeforeUnloadEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} BigInt: {writable: true, enumerable: false, configurable: true, value: ƒ} BigInt64Array: {writable: true, enumerable: false, configurable: true, value: ƒ} BigUint64Array: {writable: true, enumerable: false, configurable: true, value: ƒ} BiquadFilterNode: {writable: true, enumerable: false, configurable: true, value: ƒ} Blob: {writable: true, enumerable: false, configurable: true, value: ƒ} BlobEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Bluetooth: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothCharacteristicProperties: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothDevice: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothRemoteGATTCharacteristic: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothRemoteGATTDescriptor: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothRemoteGATTServer: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothRemoteGATTService: {writable: true, enumerable: false, configurable: true, value: ƒ} BluetoothUUID: {writable: true, enumerable: false, configurable: true, value: ƒ} Boolean: {writable: true, enumerable: false, configurable: true, value: ƒ} BroadcastChannel: {writable: true, enumerable: false, configurable: true, value: ƒ} ByteLengthQueuingStrategy: {writable: true, enumerable: false, configurable: true, value: ƒ} CDATASection: {writable: true, enumerable: false, configurable: true, value: ƒ} CSS: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSConditionRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSFontFaceRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSGroupingRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSImageValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSImportRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSKeyframeRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSKeyframesRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSKeywordValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathInvert: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathMax: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathMin: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathNegate: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathProduct: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathSum: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMathValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMatrixComponent: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSMediaRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSNamespaceRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSNumericArray: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSNumericValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSPageRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSPerspective: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSPositionValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSRotate: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSRuleList: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSScale: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSSkew: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSSkewX: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSSkewY: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSStyleDeclaration: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSStyleRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSStyleSheet: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSStyleValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSSupportsRule: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSTransformComponent: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSTransformValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSTranslate: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSUnitValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSUnparsedValue: {writable: true, enumerable: false, configurable: true, value: ƒ} CSSVariableReferenceValue: {writable: true, enumerable: false, configurable: true, value: ƒ} Cache: {writable: true, enumerable: false, configurable: true, value: ƒ} CacheStorage: {writable: true, enumerable: false, configurable: true, value: ƒ} CanvasCaptureMediaStreamTrack: {writable: true, enumerable: false, configurable: true, value: ƒ} CanvasGradient: {writable: true, enumerable: false, configurable: true, value: ƒ} CanvasPattern: {writable: true, enumerable: false, configurable: true, value: ƒ} CanvasRenderingContext2D: {writable: true, enumerable: false, configurable: true, value: ƒ} ChannelMergerNode: {writable: true, enumerable: false, configurable: true, value: ƒ} ChannelSplitterNode: {writable: true, enumerable: false, configurable: true, value: ƒ} CharacterData: {writable: true, enumerable: false, configurable: true, value: ƒ} Clipboard: {writable: true, enumerable: false, configurable: true, value: ƒ} ClipboardEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} ClipboardItem: {writable: true, enumerable: false, configurable: true, value: ƒ} CloseEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Comment: {writable: true, enumerable: false, configurable: true, value: ƒ} CompositionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} CompressionStream: {writable: true, enumerable: false, configurable: true, value: ƒ} ConstantSourceNode: {writable: true, enumerable: false, configurable: true, value: ƒ} ConvolverNode: {writable: true, enumerable: false, configurable: true, value: ƒ} CountQueuingStrategy: {writable: true, enumerable: false, configurable: true, value: ƒ} Credential: {writable: true, enumerable: false, configurable: true, value: ƒ} CredentialsContainer: {writable: true, enumerable: false, configurable: true, value: ƒ} Crypto: {writable: true, enumerable: false, configurable: true, value: ƒ} CryptoKey: {writable: true, enumerable: false, configurable: true, value: ƒ} CustomElementRegistry: {writable: true, enumerable: false, configurable: true, value: ƒ} CustomEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMError: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMException: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMImplementation: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMMatrix: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMMatrixReadOnly: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMParser: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMPoint: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMPointReadOnly: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMQuad: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMRect: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMRectList: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMRectReadOnly: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMStringList: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMStringMap: {writable: true, enumerable: false, configurable: true, value: ƒ} DOMTokenList: {writable: true, enumerable: false, configurable: true, value: ƒ} DataTransfer: {writable: true, enumerable: false, configurable: true, value: ƒ} DataTransferItem: {writable: true, enumerable: false, configurable: true, value: ƒ} DataTransferItemList: {writable: true, enumerable: false, configurable: true, value: ƒ} DataView: {writable: true, enumerable: false, configurable: true, value: ƒ} Date: {writable: true, enumerable: false, configurable: true, value: ƒ} DecompressionStream: {writable: true, enumerable: false, configurable: true, value: ƒ} DelayNode: {writable: true, enumerable: false, configurable: true, value: ƒ} DeviceMotionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} DeviceMotionEventAcceleration: {writable: true, enumerable: false, configurable: true, value: ƒ} DeviceMotionEventRotationRate: {writable: true, enumerable: false, configurable: true, value: ƒ} DeviceOrientationEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Document: {writable: true, enumerable: false, configurable: true, value: ƒ} DocumentFragment: {writable: true, enumerable: false, configurable: true, value: ƒ} DocumentType: {writable: true, enumerable: false, configurable: true, value: ƒ} DragEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} DynamicsCompressorNode: {writable: true, enumerable: false, configurable: true, value: ƒ} Element: {writable: true, enumerable: false, configurable: true, value: ƒ} ElementInternals: {writable: true, enumerable: false, configurable: true, value: ƒ} EnterPictureInPictureEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Error: {writable: true, enumerable: false, configurable: true, value: ƒ} ErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} EvalError: {writable: true, enumerable: false, configurable: true, value: ƒ} Event: {writable: true, enumerable: false, configurable: true, value: ƒ} EventSource: {writable: true, enumerable: false, configurable: true, value: ƒ} EventTarget: {writable: true, enumerable: false, configurable: true, value: ƒ} External: {writable: true, enumerable: false, configurable: true, value: ƒ} FeaturePolicy: {writable: true, enumerable: false, configurable: true, value: ƒ} FederatedCredential: {writable: true, enumerable: false, configurable: true, value: ƒ} File: {writable: true, enumerable: false, configurable: true, value: ƒ} FileList: {writable: true, enumerable: false, configurable: true, value: ƒ} FileReader: {writable: true, enumerable: false, configurable: true, value: ƒ} Float32Array: {writable: true, enumerable: false, configurable: true, value: ƒ} Float64Array: {writable: true, enumerable: false, configurable: true, value: ƒ} FocusEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} FontFace: {writable: true, enumerable: false, configurable: true, value: ƒ} FontFaceSetLoadEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} FormData: {writable: true, enumerable: false, configurable: true, value: ƒ} FormDataEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} FragmentDirective: {writable: true, enumerable: false, configurable: true, value: ƒ} Function: {writable: true, enumerable: false, configurable: true, value: ƒ} GainNode: {writable: true, enumerable: false, configurable: true, value: ƒ} Gamepad: {writable: true, enumerable: false, configurable: true, value: ƒ} GamepadButton: {writable: true, enumerable: false, configurable: true, value: ƒ} GamepadEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} GamepadHapticActuator: {writable: true, enumerable: false, configurable: true, value: ƒ} Geolocation: {writable: true, enumerable: false, configurable: true, value: ƒ} GeolocationCoordinates: {writable: true, enumerable: false, configurable: true, value: ƒ} GeolocationPosition: {writable: true, enumerable: false, configurable: true, value: ƒ} GeolocationPositionError: {writable: true, enumerable: false, configurable: true, value: ƒ} Gyroscope: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLAllCollection: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLAnchorElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLAreaElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLAudioElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLBRElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLBaseElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLBodyElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLButtonElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLCanvasElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLCollection: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLContentElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDListElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDataElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDataListElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDetailsElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDialogElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDirectoryElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDivElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLDocument: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLEmbedElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFieldSetElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFontElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFormControlsCollection: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFormElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFrameElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLFrameSetElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLHRElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLHeadElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLHeadingElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLHtmlElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLIFrameElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLImageElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLInputElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLLIElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLLabelElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLLegendElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLLinkElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMapElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMarqueeElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMediaElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMenuElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMetaElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLMeterElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLModElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLOListElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLObjectElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLOptGroupElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLOptionElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLOptionsCollection: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLOutputElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLParagraphElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLParamElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLPictureElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLPreElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLProgressElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLQuoteElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLScriptElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLSelectElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLShadowElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLSlotElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLSourceElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLSpanElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLStyleElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableCaptionElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableCellElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableColElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableRowElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTableSectionElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTemplateElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTextAreaElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTimeElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTitleElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLTrackElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLUListElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLUnknownElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HTMLVideoElement: {writable: true, enumerable: false, configurable: true, value: ƒ} HashChangeEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Headers: {writable: true, enumerable: false, configurable: true, value: ƒ} History: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBCursor: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBCursorWithValue: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBDatabase: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBFactory: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBIndex: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBKeyRange: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBObjectStore: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBOpenDBRequest: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBRequest: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBTransaction: {writable: true, enumerable: false, configurable: true, value: ƒ} IDBVersionChangeEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} IIRFilterNode: {writable: true, enumerable: false, configurable: true, value: ƒ} IdleDeadline: {writable: true, enumerable: false, configurable: true, value: ƒ} Image: {writable: true, enumerable: false, configurable: true, value: ƒ} ImageBitmap: {writable: true, enumerable: false, configurable: true, value: ƒ} ImageBitmapRenderingContext: {writable: true, enumerable: false, configurable: true, value: ƒ} ImageCapture: {writable: true, enumerable: false, configurable: true, value: ƒ} ImageData: {writable: true, enumerable: false, configurable: true, value: ƒ} InputDeviceCapabilities: {writable: true, enumerable: false, configurable: true, value: ƒ} InputDeviceInfo: {writable: true, enumerable: false, configurable: true, value: ƒ} InputEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Int8Array: {writable: true, enumerable: false, configurable: true, value: ƒ} Int16Array: {writable: true, enumerable: false, configurable: true, value: ƒ} Int32Array: {writable: true, enumerable: false, configurable: true, value: ƒ} IntersectionObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} IntersectionObserverEntry: {writable: true, enumerable: false, configurable: true, value: ƒ} Intl: {value: {…}, writable: true, enumerable: false, configurable: true} JSON: {value: JSON, writable: true, enumerable: false, configurable: true} Keyboard: {writable: true, enumerable: false, configurable: true, value: ƒ} KeyboardEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} KeyboardLayoutMap: {writable: true, enumerable: false, configurable: true, value: ƒ} KeyframeEffect: {writable: true, enumerable: false, configurable: true, value: ƒ} LargestContentfulPaint: {writable: true, enumerable: false, configurable: true, value: ƒ} LayoutShift: {writable: true, enumerable: false, configurable: true, value: ƒ} LinearAccelerationSensor: {writable: true, enumerable: false, configurable: true, value: ƒ} Location: {writable: true, enumerable: false, configurable: true, value: ƒ} Lock: {writable: true, enumerable: false, configurable: true, value: ƒ} LockManager: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIAccess: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIConnectionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIInput: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIInputMap: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIMessageEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIOutput: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIOutputMap: {writable: true, enumerable: false, configurable: true, value: ƒ} MIDIPort: {writable: true, enumerable: false, configurable: true, value: ƒ} Map: {writable: true, enumerable: false, configurable: true, value: ƒ} Math: {value: Math, writable: true, enumerable: false, configurable: true} MediaCapabilities: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaDeviceInfo: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaDevices: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaElementAudioSourceNode: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaEncryptedEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaError: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaKeyMessageEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaKeySession: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaKeyStatusMap: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaKeySystemAccess: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaKeys: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaList: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaMetadata: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaQueryList: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaQueryListEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaRecorder: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaSession: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaSettingsRange: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaSource: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStream: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStreamAudioDestinationNode: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStreamAudioSourceNode: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStreamEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStreamTrack: {writable: true, enumerable: false, configurable: true, value: ƒ} MediaStreamTrackEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MessageChannel: {writable: true, enumerable: false, configurable: true, value: ƒ} MessageEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MessagePort: {writable: true, enumerable: false, configurable: true, value: ƒ} MimeType: {writable: true, enumerable: false, configurable: true, value: ƒ} MimeTypeArray: {writable: true, enumerable: false, configurable: true, value: ƒ} MouseEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MutationEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} MutationObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} MutationRecord: {writable: true, enumerable: false, configurable: true, value: ƒ} NaN: {value: NaN, writable: false, enumerable: false, configurable: false} NamedNodeMap: {writable: true, enumerable: false, configurable: true, value: ƒ} NavigationPreloadManager: {writable: true, enumerable: false, configurable: true, value: ƒ} Navigator: {writable: true, enumerable: false, configurable: true, value: ƒ} NetworkInformation: {writable: true, enumerable: false, configurable: true, value: ƒ} Node: {writable: true, enumerable: false, configurable: true, value: ƒ} NodeFilter: {writable: true, enumerable: false, configurable: true, value: ƒ} NodeIterator: {writable: true, enumerable: false, configurable: true, value: ƒ} NodeList: {writable: true, enumerable: false, configurable: true, value: ƒ} Notification: {writable: true, enumerable: false, configurable: true, value: ƒ} Number: {writable: true, enumerable: false, configurable: true, value: ƒ} Object: {writable: true, enumerable: false, configurable: true, value: ƒ} OfflineAudioCompletionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} OfflineAudioContext: {writable: true, enumerable: false, configurable: true, value: ƒ} OffscreenCanvas: {writable: true, enumerable: false, configurable: true, value: ƒ} OffscreenCanvasRenderingContext2D: {writable: true, enumerable: false, configurable: true, value: ƒ} Option: {writable: true, enumerable: false, configurable: true, value: ƒ} OrientationSensor: {writable: true, enumerable: false, configurable: true, value: ƒ} OscillatorNode: {writable: true, enumerable: false, configurable: true, value: ƒ} OverconstrainedError: {writable: true, enumerable: false, configurable: true, value: ƒ} PageTransitionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PannerNode: {writable: true, enumerable: false, configurable: true, value: ƒ} PasswordCredential: {writable: true, enumerable: false, configurable: true, value: ƒ} Path2D: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentAddress: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentInstruments: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentManager: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentMethodChangeEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentRequest: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentRequestUpdateEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PaymentResponse: {writable: true, enumerable: false, configurable: true, value: ƒ} Performance: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceElementTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceEntry: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceEventTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceLongTaskTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceMark: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceMeasure: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceNavigation: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceNavigationTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceObserverEntryList: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformancePaintTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceResourceTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceServerTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PerformanceTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} PeriodicSyncManager: {writable: true, enumerable: false, configurable: true, value: ƒ} PeriodicWave: {writable: true, enumerable: false, configurable: true, value: ƒ} PermissionStatus: {writable: true, enumerable: false, configurable: true, value: ƒ} Permissions: {writable: true, enumerable: false, configurable: true, value: ƒ} PhotoCapabilities: {writable: true, enumerable: false, configurable: true, value: ƒ} PictureInPictureWindow: {writable: true, enumerable: false, configurable: true, value: ƒ} Plugin: {writable: true, enumerable: false, configurable: true, value: ƒ} PluginArray: {writable: true, enumerable: false, configurable: true, value: ƒ} PointerEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PopStateEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Presentation: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationAvailability: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationConnection: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationConnectionAvailableEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationConnectionCloseEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationConnectionList: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationReceiver: {writable: true, enumerable: false, configurable: true, value: ƒ} PresentationRequest: {writable: true, enumerable: false, configurable: true, value: ƒ} ProcessingInstruction: {writable: true, enumerable: false, configurable: true, value: ƒ} ProgressEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Promise: {writable: true, enumerable: false, configurable: true, value: ƒ} PromiseRejectionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Proxy: {writable: true, enumerable: false, configurable: true, value: ƒ} PublicKeyCredential: {writable: true, enumerable: false, configurable: true, value: ƒ} PushManager: {writable: true, enumerable: false, configurable: true, value: ƒ} PushSubscription: {writable: true, enumerable: false, configurable: true, value: ƒ} PushSubscriptionOptions: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCCertificate: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCDTMFSender: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCDTMFToneChangeEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCDataChannel: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCDataChannelEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCDtlsTransport: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCError: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCIceCandidate: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCIceTransport: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCPeerConnection: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCPeerConnectionIceErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCPeerConnectionIceEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCRtpReceiver: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCRtpSender: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCRtpTransceiver: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCSctpTransport: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCSessionDescription: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCStatsReport: {writable: true, enumerable: false, configurable: true, value: ƒ} RTCTrackEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} RadioNodeList: {writable: true, enumerable: false, configurable: true, value: ƒ} Range: {writable: true, enumerable: false, configurable: true, value: ƒ} RangeError: {writable: true, enumerable: false, configurable: true, value: ƒ} ReadableStream: {writable: true, enumerable: false, configurable: true, value: ƒ} ReadableStreamDefaultReader: {writable: true, enumerable: false, configurable: true, value: ƒ} ReferenceError: {writable: true, enumerable: false, configurable: true, value: ƒ} Reflect: {value: {…}, writable: true, enumerable: false, configurable: true} RegExp: {writable: true, enumerable: false, configurable: true, value: ƒ} RelativeOrientationSensor: {writable: true, enumerable: false, configurable: true, value: ƒ} RemotePlayback: {writable: true, enumerable: false, configurable: true, value: ƒ} ReportingObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} Request: {writable: true, enumerable: false, configurable: true, value: ƒ} ResizeObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} ResizeObserverEntry: {writable: true, enumerable: false, configurable: true, value: ƒ} Response: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAngle: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimateElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimateMotionElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimateTransformElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedAngle: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedBoolean: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedEnumeration: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedInteger: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedLength: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedLengthList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedNumber: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedNumberList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedPreserveAspectRatio: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedRect: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedString: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimatedTransformList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGAnimationElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGCircleElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGClipPathElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGComponentTransferFunctionElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGDefsElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGDescElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGEllipseElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEBlendElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEColorMatrixElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEComponentTransferElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFECompositeElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEConvolveMatrixElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEDiffuseLightingElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEDisplacementMapElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEDistantLightElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEDropShadowElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEFloodElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEFuncAElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEFuncBElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEFuncGElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEFuncRElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEGaussianBlurElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEImageElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEMergeElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEMergeNodeElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEMorphologyElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEOffsetElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFEPointLightElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFESpecularLightingElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFESpotLightElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFETileElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFETurbulenceElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGFilterElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGForeignObjectElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGGElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGGeometryElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGGradientElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGGraphicsElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGImageElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGLength: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGLengthList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGLineElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGLinearGradientElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGMPathElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGMarkerElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGMaskElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGMatrix: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGMetadataElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGNumber: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGNumberList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPathElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPatternElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPoint: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPointList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPolygonElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPolylineElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGPreserveAspectRatio: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGRadialGradientElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGRect: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGRectElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGSVGElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGScriptElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGSetElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGStopElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGStringList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGStyleElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGSwitchElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGSymbolElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTSpanElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTextContentElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTextElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTextPathElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTextPositioningElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTitleElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTransform: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGTransformList: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGUnitTypes: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGUseElement: {writable: true, enumerable: false, configurable: true, value: ƒ} SVGViewElement: {writable: true, enumerable: false, configurable: true, value: ƒ} Screen: {writable: true, enumerable: false, configurable: true, value: ƒ} ScreenOrientation: {writable: true, enumerable: false, configurable: true, value: ƒ} ScriptProcessorNode: {writable: true, enumerable: false, configurable: true, value: ƒ} SecurityPolicyViolationEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Selection: {writable: true, enumerable: false, configurable: true, value: ƒ} Sensor: {writable: true, enumerable: false, configurable: true, value: ƒ} SensorErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} ServiceWorker: {writable: true, enumerable: false, configurable: true, value: ƒ} ServiceWorkerContainer: {writable: true, enumerable: false, configurable: true, value: ƒ} ServiceWorkerRegistration: {writable: true, enumerable: false, configurable: true, value: ƒ} Set: {writable: true, enumerable: false, configurable: true, value: ƒ} ShadowRoot: {writable: true, enumerable: false, configurable: true, value: ƒ} SharedArrayBuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} SharedWorker: {writable: true, enumerable: false, configurable: true, value: ƒ} SourceBuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} SourceBufferList: {writable: true, enumerable: false, configurable: true, value: ƒ} SpeechSynthesisErrorEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} SpeechSynthesisEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} SpeechSynthesisUtterance: {writable: true, enumerable: false, configurable: true, value: ƒ} StaticRange: {writable: true, enumerable: false, configurable: true, value: ƒ} StereoPannerNode: {writable: true, enumerable: false, configurable: true, value: ƒ} Storage: {writable: true, enumerable: false, configurable: true, value: ƒ} StorageEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} StorageManager: {writable: true, enumerable: false, configurable: true, value: ƒ} String: {writable: true, enumerable: false, configurable: true, value: ƒ} StylePropertyMap: {writable: true, enumerable: false, configurable: true, value: ƒ} StylePropertyMapReadOnly: {writable: true, enumerable: false, configurable: true, value: ƒ} StyleSheet: {writable: true, enumerable: false, configurable: true, value: ƒ} StyleSheetList: {writable: true, enumerable: false, configurable: true, value: ƒ} SubmitEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} SubtleCrypto: {writable: true, enumerable: false, configurable: true, value: ƒ} Symbol: {writable: true, enumerable: false, configurable: true, value: ƒ} SyncManager: {writable: true, enumerable: false, configurable: true, value: ƒ} SyntaxError: {writable: true, enumerable: false, configurable: true, value: ƒ} TaskAttributionTiming: {writable: true, enumerable: false, configurable: true, value: ƒ} Text: {writable: true, enumerable: false, configurable: true, value: ƒ} TextDecoder: {writable: true, enumerable: false, configurable: true, value: ƒ} TextDecoderStream: {writable: true, enumerable: false, configurable: true, value: ƒ} TextEncoder: {writable: true, enumerable: false, configurable: true, value: ƒ} TextEncoderStream: {writable: true, enumerable: false, configurable: true, value: ƒ} TextEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} TextMetrics: {writable: true, enumerable: false, configurable: true, value: ƒ} TextTrack: {writable: true, enumerable: false, configurable: true, value: ƒ} TextTrackCue: {writable: true, enumerable: false, configurable: true, value: ƒ} TextTrackCueList: {writable: true, enumerable: false, configurable: true, value: ƒ} TextTrackList: {writable: true, enumerable: false, configurable: true, value: ƒ} TimeRanges: {writable: true, enumerable: false, configurable: true, value: ƒ} Touch: {writable: true, enumerable: false, configurable: true, value: ƒ} TouchEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} TouchList: {writable: true, enumerable: false, configurable: true, value: ƒ} TrackEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} TransformStream: {writable: true, enumerable: false, configurable: true, value: ƒ} TransitionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} TreeWalker: {writable: true, enumerable: false, configurable: true, value: ƒ} TrustedHTML: {writable: true, enumerable: false, configurable: true, value: ƒ} TrustedScript: {writable: true, enumerable: false, configurable: true, value: ƒ} TrustedScriptURL: {writable: true, enumerable: false, configurable: true, value: ƒ} TrustedTypePolicy: {writable: true, enumerable: false, configurable: true, value: ƒ} TrustedTypePolicyFactory: {writable: true, enumerable: false, configurable: true, value: ƒ} TypeError: {writable: true, enumerable: false, configurable: true, value: ƒ} UIEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} URIError: {writable: true, enumerable: false, configurable: true, value: ƒ} URL: {writable: true, enumerable: false, configurable: true, value: ƒ} URLSearchParams: {writable: true, enumerable: false, configurable: true, value: ƒ} USB: {writable: true, enumerable: false, configurable: true, value: ƒ} USBAlternateInterface: {writable: true, enumerable: false, configurable: true, value: ƒ} USBConfiguration: {writable: true, enumerable: false, configurable: true, value: ƒ} USBConnectionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} USBDevice: {writable: true, enumerable: false, configurable: true, value: ƒ} USBEndpoint: {writable: true, enumerable: false, configurable: true, value: ƒ} USBInTransferResult: {writable: true, enumerable: false, configurable: true, value: ƒ} USBInterface: {writable: true, enumerable: false, configurable: true, value: ƒ} USBIsochronousInTransferPacket: {writable: true, enumerable: false, configurable: true, value: ƒ} USBIsochronousInTransferResult: {writable: true, enumerable: false, configurable: true, value: ƒ} USBIsochronousOutTransferPacket: {writable: true, enumerable: false, configurable: true, value: ƒ} USBIsochronousOutTransferResult: {writable: true, enumerable: false, configurable: true, value: ƒ} USBOutTransferResult: {writable: true, enumerable: false, configurable: true, value: ƒ} Uint8Array: {writable: true, enumerable: false, configurable: true, value: ƒ} Uint8ClampedArray: {writable: true, enumerable: false, configurable: true, value: ƒ} Uint16Array: {writable: true, enumerable: false, configurable: true, value: ƒ} Uint32Array: {writable: true, enumerable: false, configurable: true, value: ƒ} UserActivation: {writable: true, enumerable: false, configurable: true, value: ƒ} VTTCue: {writable: true, enumerable: false, configurable: true, value: ƒ} ValidityState: {writable: true, enumerable: false, configurable: true, value: ƒ} VideoPlaybackQuality: {writable: true, enumerable: false, configurable: true, value: ƒ} VisualViewport: {writable: true, enumerable: false, configurable: true, value: ƒ} WaveShaperNode: {writable: true, enumerable: false, configurable: true, value: ƒ} WeakMap: {writable: true, enumerable: false, configurable: true, value: ƒ} WeakSet: {writable: true, enumerable: false, configurable: true, value: ƒ} WebAssembly: {value: WebAssembly, writable: true, enumerable: false, configurable: true} WebGL2RenderingContext: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLActiveInfo: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLBuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLContextEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLFramebuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLProgram: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLQuery: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLRenderbuffer: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLRenderingContext: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLSampler: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLShader: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLShaderPrecisionFormat: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLSync: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLTexture: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLTransformFeedback: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLUniformLocation: {writable: true, enumerable: false, configurable: true, value: ƒ} WebGLVertexArrayObject: {writable: true, enumerable: false, configurable: true, value: ƒ} WebKitCSSMatrix: {writable: true, enumerable: false, configurable: true, value: ƒ} WebKitMutationObserver: {writable: true, enumerable: false, configurable: true, value: ƒ} WebSocket: {writable: true, enumerable: false, configurable: true, value: ƒ} WheelEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} Window: {writable: true, enumerable: false, configurable: true, value: ƒ} Worker: {writable: true, enumerable: false, configurable: true, value: ƒ} Worklet: {writable: true, enumerable: false, configurable: true, value: ƒ} WritableStream: {writable: true, enumerable: false, configurable: true, value: ƒ} WritableStreamDefaultWriter: {writable: true, enumerable: false, configurable: true, value: ƒ} XMLDocument: {writable: true, enumerable: false, configurable: true, value: ƒ} XMLHttpRequest: {writable: true, enumerable: false, configurable: true, value: ƒ} XMLHttpRequestEventTarget: {writable: true, enumerable: false, configurable: true, value: ƒ} XMLHttpRequestUpload: {writable: true, enumerable: false, configurable: true, value: ƒ} XMLSerializer: {writable: true, enumerable: false, configurable: true, value: ƒ} XPathEvaluator: {writable: true, enumerable: false, configurable: true, value: ƒ} XPathExpression: {writable: true, enumerable: false, configurable: true, value: ƒ} XPathResult: {writable: true, enumerable: false, configurable: true, value: ƒ} XRBoundedReferenceSpace: {writable: true, enumerable: false, configurable: true, value: ƒ} XRDOMOverlayState: {writable: true, enumerable: false, configurable: true, value: ƒ} XRFrame: {writable: true, enumerable: false, configurable: true, value: ƒ} XRHitTestResult: {writable: true, enumerable: false, configurable: true, value: ƒ} XRHitTestSource: {writable: true, enumerable: false, configurable: true, value: ƒ} XRInputSource: {writable: true, enumerable: false, configurable: true, value: ƒ} XRInputSourceArray: {writable: true, enumerable: false, configurable: true, value: ƒ} XRInputSourceEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} XRInputSourcesChangeEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} XRPose: {writable: true, enumerable: false, configurable: true, value: ƒ} XRRay: {writable: true, enumerable: false, configurable: true, value: ƒ} XRReferenceSpace: {writable: true, enumerable: false, configurable: true, value: ƒ} XRReferenceSpaceEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} XRRenderState: {writable: true, enumerable: false, configurable: true, value: ƒ} XRRigidTransform: {writable: true, enumerable: false, configurable: true, value: ƒ} XRSession: {writable: true, enumerable: false, configurable: true, value: ƒ} XRSessionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} XRSpace: {writable: true, enumerable: false, configurable: true, value: ƒ} XRSystem: {writable: true, enumerable: false, configurable: true, value: ƒ} XRTransientInputHitTestResult: {writable: true, enumerable: false, configurable: true, value: ƒ} XRTransientInputHitTestSource: {writable: true, enumerable: false, configurable: true, value: ƒ} XRView: {writable: true, enumerable: false, configurable: true, value: ƒ} XRViewerPose: {writable: true, enumerable: false, configurable: true, value: ƒ} XRViewport: {writable: true, enumerable: false, configurable: true, value: ƒ} XRWebGLLayer: {writable: true, enumerable: false, configurable: true, value: ƒ} XSLTProcessor: {writable: true, enumerable: false, configurable: true, value: ƒ} alert: {writable: true, enumerable: true, configurable: true, value: ƒ} applicationCache: {set: undefined, enumerable: true, configurable: true, get: ƒ} atob: {writable: true, enumerable: true, configurable: true, value: ƒ} blur: {writable: true, enumerable: true, configurable: true, value: ƒ} btoa: {writable: true, enumerable: true, configurable: true, value: ƒ} caches: {set: undefined, enumerable: true, configurable: true, get: ƒ} cancelAnimationFrame: {writable: true, enumerable: true, configurable: true, value: ƒ} cancelIdleCallback: {writable: true, enumerable: true, configurable: true, value: ƒ} captureEvents: {writable: true, enumerable: true, configurable: true, value: ƒ} chrome: {value: {…}, writable: true, enumerable: true, configurable: false} clear: {writable: true, enumerable: false, configurable: true, value: ƒ} clearInterval: {writable: true, enumerable: true, configurable: true, value: ƒ} clearTimeout: {writable: true, enumerable: true, configurable: true, value: ƒ} clientInformation: {enumerable: true, configurable: true, get: ƒ, set: ƒ} close: {writable: true, enumerable: true, configurable: true, value: ƒ} closed: {value: false, writable: false, enumerable: true, configurable: true} confirm: {writable: true, enumerable: true, configurable: true, value: ƒ} console: {value: console, writable: true, enumerable: false, configurable: true} copy: {writable: true, enumerable: false, configurable: true, value: ƒ} createImageBitmap: {writable: true, enumerable: true, configurable: true, value: ƒ} crypto: {set: undefined, enumerable: true, configurable: true, get: ƒ} customElements: {set: undefined, enumerable: true, configurable: true, get: ƒ} debug: {writable: true, enumerable: false, configurable: true, value: ƒ} decodeURI: {writable: true, enumerable: false, configurable: true, value: ƒ} decodeURIComponent: {writable: true, enumerable: false, configurable: true, value: ƒ} defaultStatus: {enumerable: true, configurable: true, get: ƒ, set: ƒ} defaultstatus: {enumerable: true, configurable: true, get: ƒ, set: ƒ} devicePixelRatio: {enumerable: true, configurable: true, get: ƒ, set: ƒ} dir: {writable: true, enumerable: false, configurable: true, value: ƒ} dirxml: {writable: true, enumerable: false, configurable: true, value: ƒ} document: {set: undefined, enumerable: true, configurable: false, get: ƒ} encodeURI: {writable: true, enumerable: false, configurable: true, value: ƒ} encodeURIComponent: {writable: true, enumerable: false, configurable: true, value: ƒ} escape: {writable: true, enumerable: false, configurable: true, value: ƒ} eval: {writable: true, enumerable: false, configurable: true, value: ƒ} event: {enumerable: false, configurable: true, get: ƒ, set: ƒ} external: {enumerable: true, configurable: true, get: ƒ, set: ƒ} fetch: {writable: true, enumerable: true, configurable: true, value: ƒ} find: {writable: true, enumerable: true, configurable: true, value: ƒ} focus: {writable: true, enumerable: true, configurable: true, value: ƒ} frameElement: {set: undefined, enumerable: true, configurable: true, get: ƒ} frames: {value: Window, writable: true, enumerable: true, configurable: true} getComputedStyle: {writable: true, enumerable: true, configurable: true, value: ƒ} getEventListeners: {writable: true, enumerable: false, configurable: true, value: ƒ} getSelection: {writable: true, enumerable: true, configurable: true, value: ƒ} globalThis: {value: Window, writable: true, enumerable: false, configurable: true} history: {set: undefined, enumerable: true, configurable: true, get: ƒ} indexedDB: {set: undefined, enumerable: true, configurable: true, get: ƒ} innerHeight: {enumerable: true, configurable: true, get: ƒ, set: ƒ} innerWidth: {enumerable: true, configurable: true, get: ƒ, set: ƒ} inspect: {writable: true, enumerable: false, configurable: true, value: ƒ} isFinite: {writable: true, enumerable: false, configurable: true, value: ƒ} isNaN: {writable: true, enumerable: false, configurable: true, value: ƒ} isSecureContext: {set: undefined, enumerable: true, configurable: true, get: ƒ} keys: {writable: true, enumerable: false, configurable: true, value: ƒ} length: {value: 0, writable: true, enumerable: true, configurable: true} localStorage: {set: undefined, enumerable: true, configurable: true, get: ƒ} location: {value: Location, writable: true, enumerable: true, configurable: false} locationbar: {enumerable: true, configurable: true, get: ƒ, set: ƒ} matchMedia: {writable: true, enumerable: true, configurable: true, value: ƒ} menubar: {enumerable: true, configurable: true, get: ƒ, set: ƒ} monitor: {writable: true, enumerable: false, configurable: true, value: ƒ} monitorEvents: {writable: true, enumerable: false, configurable: true, value: ƒ} moveBy: {writable: true, enumerable: true, configurable: true, value: ƒ} moveTo: {writable: true, enumerable: true, configurable: true, value: ƒ} name: {enumerable: true, configurable: true, get: ƒ, set: ƒ} navigator: {set: undefined, enumerable: true, configurable: true, get: ƒ} offscreenBuffering: {enumerable: false, configurable: true, get: ƒ, set: ƒ} onabort: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onafterprint: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onanimationend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onanimationiteration: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onanimationstart: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onappinstalled: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onauxclick: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onbeforeinstallprompt: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onbeforeprint: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onbeforeunload: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onblur: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oncancel: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oncanplay: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oncanplaythrough: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onchange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onclick: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onclose: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oncontextmenu: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oncuechange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondblclick: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondevicemotion: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondeviceorientation: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondeviceorientationabsolute: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondrag: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondragend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondragenter: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondragleave: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondragover: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondragstart: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondrop: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ondurationchange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onemptied: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onended: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onerror: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onfocus: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onformdata: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ongotpointercapture: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onhashchange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oninput: {enumerable: true, configurable: true, get: ƒ, set: ƒ} oninvalid: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onkeydown: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onkeypress: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onkeyup: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onlanguagechange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onload: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onloadeddata: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onloadedmetadata: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onloadstart: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onlostpointercapture: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmessage: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmessageerror: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmousedown: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmouseenter: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmouseleave: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmousemove: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmouseout: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmouseover: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmouseup: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onmousewheel: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onoffline: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ononline: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpagehide: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpageshow: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpause: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onplay: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onplaying: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointercancel: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerdown: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerenter: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerleave: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointermove: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerout: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerover: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerrawupdate: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpointerup: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onpopstate: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onprogress: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onratechange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onrejectionhandled: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onreset: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onresize: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onscroll: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onsearch: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onseeked: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onseeking: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onselect: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onselectionchange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onselectstart: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onstalled: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onstorage: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onsubmit: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onsuspend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ontimeupdate: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ontoggle: {enumerable: true, configurable: true, get: ƒ, set: ƒ} ontransitionend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onunhandledrejection: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onunload: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onvolumechange: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwaiting: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwebkitanimationend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwebkitanimationiteration: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwebkitanimationstart: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwebkittransitionend: {enumerable: true, configurable: true, get: ƒ, set: ƒ} onwheel: {enumerable: true, configurable: true, get: ƒ, set: ƒ} open: {writable: true, enumerable: true, configurable: true, value: ƒ} openDatabase: {writable: true, enumerable: true, configurable: true, value: ƒ} opener: {value: null, writable: true, enumerable: true, configurable: true} origin: {enumerable: true, configurable: true, get: ƒ, set: ƒ} outerHeight: {enumerable: true, configurable: true, get: ƒ, set: ƒ} outerWidth: {enumerable: true, configurable: true, get: ƒ, set: ƒ} pageXOffset: {enumerable: true, configurable: true, get: ƒ, set: ƒ} pageYOffset: {enumerable: true, configurable: true, get: ƒ, set: ƒ} parent: {value: Window, writable: true, enumerable: true, configurable: true} parseFloat: {writable: true, enumerable: false, configurable: true, value: ƒ} parseInt: {writable: true, enumerable: false, configurable: true, value: ƒ} performance: {enumerable: true, configurable: true, get: ƒ, set: ƒ} personalbar: {enumerable: true, configurable: true, get: ƒ, set: ƒ} postMessage: {writable: true, enumerable: true, configurable: true, value: ƒ} print: {writable: true, enumerable: true, configurable: true, value: ƒ} profile: {writable: true, enumerable: false, configurable: true, value: ƒ} profileEnd: {writable: true, enumerable: false, configurable: true, value: ƒ} prompt: {writable: true, enumerable: true, configurable: true, value: ƒ} queryObjects: {writable: true, enumerable: false, configurable: true, value: ƒ} queueMicrotask: {writable: true, enumerable: true, configurable: true, value: ƒ} releaseEvents: {writable: true, enumerable: true, configurable: true, value: ƒ} requestAnimationFrame: {writable: true, enumerable: true, configurable: true, value: ƒ} requestIdleCallback: {writable: true, enumerable: true, configurable: true, value: ƒ} resizeBy: {writable: true, enumerable: true, configurable: true, value: ƒ} resizeTo: {writable: true, enumerable: true, configurable: true, value: ƒ} screen: {enumerable: true, configurable: true, get: ƒ, set: ƒ} screenLeft: {enumerable: true, configurable: true, get: ƒ, set: ƒ} screenTop: {enumerable: true, configurable: true, get: ƒ, set: ƒ} screenX: {enumerable: true, configurable: true, get: ƒ, set: ƒ} screenY: {enumerable: true, configurable: true, get: ƒ, set: ƒ} scroll: {writable: true, enumerable: true, configurable: true, value: ƒ} scrollBy: {writable: true, enumerable: true, configurable: true, value: ƒ} scrollTo: {writable: true, enumerable: true, configurable: true, value: ƒ} scrollX: {enumerable: true, configurable: true, get: ƒ, set: ƒ} scrollY: {enumerable: true, configurable: true, get: ƒ, set: ƒ} scrollbars: {enumerable: true, configurable: true, get: ƒ, set: ƒ} self: {value: Window, writable: true, enumerable: true, configurable: true} sessionStorage: {set: undefined, enumerable: true, configurable: true, get: ƒ} setInterval: {writable: true, enumerable: true, configurable: true, value: ƒ} setTimeout: {writable: true, enumerable: true, configurable: true, value: ƒ} speechSynthesis: {set: undefined, enumerable: true, configurable: true, get: ƒ} status: {enumerable: true, configurable: true, get: ƒ, set: ƒ} statusbar: {enumerable: true, configurable: true, get: ƒ, set: ƒ} stop: {writable: true, enumerable: true, configurable: true, value: ƒ} styleMedia: {set: undefined, enumerable: true, configurable: true, get: ƒ} table: {writable: true, enumerable: false, configurable: true, value: ƒ} toolbar: {enumerable: true, configurable: true, get: ƒ, set: ƒ} top: {value: Window, writable: false, enumerable: true, configurable: false} trustedTypes: {set: undefined, enumerable: true, configurable: true, get: ƒ} undebug: {writable: true, enumerable: false, configurable: true, value: ƒ} undefined: {value: undefined, writable: false, enumerable: false, configurable: false} unescape: {writable: true, enumerable: false, configurable: true, value: ƒ} unmonitor: {writable: true, enumerable: false, configurable: true, value: ƒ} unmonitorEvents: {writable: true, enumerable: false, configurable: true, value: ƒ} values: {writable: true, enumerable: false, configurable: true, value: ƒ} visualViewport: {enumerable: true, configurable: true, get: ƒ, set: ƒ} webkitCancelAnimationFrame: {writable: true, enumerable: true, configurable: true, value: ƒ} webkitMediaStream: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitRTCPeerConnection: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitRequestAnimationFrame: {writable: true, enumerable: true, configurable: true, value: ƒ} webkitRequestFileSystem: {writable: true, enumerable: true, configurable: true, value: ƒ} webkitResolveLocalFileSystemURL: {writable: true, enumerable: true, configurable: true, value: ƒ} webkitSpeechGrammar: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitSpeechGrammarList: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitSpeechRecognition: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitSpeechRecognitionError: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitSpeechRecognitionEvent: {writable: true, enumerable: false, configurable: true, value: ƒ} webkitStorageInfo: {set: undefined, enumerable: true, configurable: true, get: ƒ} webkitURL: {writable: true, enumerable: false, configurable: true, value: ƒ} window: {value: Window, writable: false, enumerable: true, configurable: false}
node中的全局对象的属性:
// node.js 中 Object.getOwnPropertyDescriptors(globalThis) { Object: { value: [Function: Object], writable: true, enumerable: false, configurable: true }, Function: { value: [Function: Function], writable: true, enumerable: false, configurable: true }, Array: { value: [Function: Array], writable: true, enumerable: false, configurable: true }, Number: { value: [Function: Number], writable: true, enumerable: false, configurable: true }, parseFloat: { value: [Function: parseFloat], writable: true, enumerable: false, configurable: true }, parseInt: { value: [Function: parseInt], writable: true, enumerable: false, configurable: true }, Infinity: { value: Infinity, writable: false, enumerable: false, configurable: false }, NaN: { value: NaN, writable: false, enumerable: false, configurable: false }, undefined: { value: undefined, writable: false, enumerable: false, configurable: false }, Boolean: { value: [Function: Boolean], writable: true, enumerable: false, configurable: true }, String: { value: [Function: String], writable: true, enumerable: false, configurable: true }, Symbol: { value: [Function: Symbol], writable: true, enumerable: false, configurable: true }, Date: { value: [Function: Date], writable: true, enumerable: false, configurable: true }, Promise: { value: [Function: Promise], writable: true, enumerable: false, configurable: true }, RegExp: { value: [Function: RegExp], writable: true, enumerable: false, configurable: true }, Error: { value: [Function: Error] { stackTraceLimit: 10 }, writable: true, enumerable: false, configurable: true }, EvalError: { value: [Function: EvalError], writable: true, enumerable: false, configurable: true }, RangeError: { value: [Function: RangeError], writable: true, enumerable: false, configurable: true }, ReferenceError: { value: [Function: ReferenceError], writable: true, enumerable: false, configurable: true }, SyntaxError: { value: [Function: SyntaxError], writable: true, enumerable: false, configurable: true }, TypeError: { value: [Function: TypeError], writable: true, enumerable: false, configurable: true }, URIError: { value: [Function: URIError], writable: true, enumerable: false, configurable: true }, globalThis: { value: <ref *1> Object [global] { global: [Circular *1], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setInterval: [Function: setInterval], setTimeout: [Function], queueMicrotask: [Function: queueMicrotask], clearImmediate: [Function: clearImmediate], setImmediate: [Function] }, writable: true, enumerable: false, configurable: true }, JSON: { value: Object [JSON] {}, writable: true, enumerable: false, configurable: true }, Math: { value: Object [Math] {}, writable: true, enumerable: false, configurable: true }, console: { value: { log: [Function: bound consoleCall], warn: [Function: bound consoleCall], dir: [Function: bound consoleCall], time: [Function: bound consoleCall], timeEnd: [Function: bound consoleCall], timeLog: [Function: bound consoleCall], trace: [Function: bound consoleCall], assert: [Function: bound consoleCall], clear: [Function: bound consoleCall], count: [Function: bound consoleCall], countReset: [Function: bound consoleCall], group: [Function: bound consoleCall], groupEnd: [Function: bound consoleCall], table: [Function: bound consoleCall], debug: [Function: bound consoleCall], info: [Function: bound consoleCall], dirxml: [Function: bound consoleCall], error: [Function: bound consoleCall], groupCollapsed: [Function: bound consoleCall], Console: [Function: Console], profile: [Function: profile], profileEnd: [Function: profileEnd], timeStamp: [Function: timeStamp], context: [Function: context], [Symbol(kBindStreamsEager)]: [Function: bound ], [Symbol(kBindStreamsLazy)]: [Function: bound ], [Symbol(kBindProperties)]: [Function: bound ], [Symbol(kWriteToConsole)]: [Function: bound ], [Symbol(kGetInspectOptions)]: [Function: bound ], [Symbol(kFormatForStdout)]: [Function: bound ], [Symbol(kFormatForStderr)]: [Function: bound ] }, writable: true, enumerable: false, configurable: true }, Intl: { value: {}, writable: true, enumerable: false, configurable: true }, ArrayBuffer: { value: [Function: ArrayBuffer], writable: true, enumerable: false, configurable: true }, Uint8Array: { value: [Function: Uint8Array], writable: true, enumerable: false, configurable: true }, Int8Array: { value: [Function: Int8Array], writable: true, enumerable: false, configurable: true }, Uint16Array: { value: [Function: Uint16Array], writable: true, enumerable: false, configurable: true }, Int16Array: { value: [Function: Int16Array], writable: true, enumerable: false, configurable: true }, Uint32Array: { value: [Function: Uint32Array], writable: true, enumerable: false, configurable: true }, Int32Array: { value: [Function: Int32Array], writable: true, enumerable: false, configurable: true }, Float32Array: { value: [Function: Float32Array], writable: true, enumerable: false, configurable: true }, Float64Array: { value: [Function: Float64Array], writable: true, enumerable: false, configurable: true }, Uint8ClampedArray: { value: [Function: Uint8ClampedArray], writable: true, enumerable: false, configurable: true }, BigUint64Array: { value: [Function: BigUint64Array], writable: true, enumerable: false, configurable: true }, BigInt64Array: { value: [Function: BigInt64Array], writable: true, enumerable: false, configurable: true }, DataView: { value: [Function: DataView], writable: true, enumerable: false, configurable: true }, Map: { value: [Function: Map], writable: true, enumerable: false, configurable: true }, BigInt: { value: [Function: BigInt], writable: true, enumerable: false, configurable: true }, Set: { value: [Function: Set], writable: true, enumerable: false, configurable: true }, WeakMap: { value: [Function: WeakMap], writable: true, enumerable: false, configurable: true }, WeakSet: { value: [Function: WeakSet], writable: true, enumerable: false, configurable: true }, Proxy: { value: [Function: Proxy], writable: true, enumerable: false, configurable: true }, Reflect: { value: {}, writable: true, enumerable: false, configurable: true }, decodeURI: { value: [Function: decodeURI], writable: true, enumerable: false, configurable: true }, decodeURIComponent: { value: [Function: decodeURIComponent], writable: true, enumerable: false, configurable: true }, encodeURI: { value: [Function: encodeURI], writable: true, enumerable: false, configurable: true }, encodeURIComponent: { value: [Function: encodeURIComponent], writable: true, enumerable: false, configurable: true }, escape: { value: [Function: escape], writable: true, enumerable: false, configurable: true }, unescape: { value: [Function: unescape], writable: true, enumerable: false, configurable: true }, eval: { value: [Function: eval], writable: true, enumerable: false, configurable: true }, isFinite: { value: [Function: isFinite], writable: true, enumerable: false, configurable: true }, isNaN: { value: [Function: isNaN], writable: true, enumerable: false, configurable: true }, SharedArrayBuffer: { value: [Function: SharedArrayBuffer], writable: true, enumerable: false, configurable: true }, Atomics: { value: Object [Atomics] {}, writable: true, enumerable: false, configurable: true }, WebAssembly: { value: Object [WebAssembly] { compile: [Function: compile], validate: [Function: validate], instantiate: [Function: instantiate] }, writable: true, enumerable: false, configurable: true }, global: { value: <ref *1> Object [global] { global: [Circular *1], clearInterval: [Function: clearInterval], clearTimeout: [Function: clearTimeout], setInterval: [Function: setInterval], setTimeout: [Function], queueMicrotask: [Function: queueMicrotask], clearImmediate: [Function: clearImmediate], setImmediate: [Function] }, writable: true, enumerable: true, configurable: true }, process: { get: [Function: get], set: [Function: set], enumerable: false, configurable: true }, Buffer: { get: [Function: get], set: [Function: set], enumerable: false, configurable: true }, URL: { value: [Function: URL], writable: true, enumerable: false, configurable: true }, URLSearchParams: { value: [Function: URLSearchParams], writable: true, enumerable: false, configurable: true }, TextEncoder: { value: [Function: TextEncoder], writable: true, enumerable: false, configurable: true }, TextDecoder: { value: [Function: TextDecoder], writable: true, enumerable: false, configurable: true }, clearInterval: { value: [Function: clearInterval], writable: true, enumerable: true, configurable: true }, clearTimeout: { value: [Function: clearTimeout], writable: true, enumerable: true, configurable: true }, setInterval: { value: [Function: setInterval], writable: true, enumerable: true, configurable: true }, setTimeout: { value: [Function: setTimeout] { [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)] }, writable: true, enumerable: true, configurable: true }, queueMicrotask: { value: [Function: queueMicrotask], writable: true, enumerable: true, configurable: true }, clearImmediate: { value: [Function: clearImmediate], writable: true, enumerable: true, configurable: true }, setImmediate: { value: [Function: setImmediate] { [Symbol(nodejs.util.promisify.custom)]: [Function (anonymous)] }, writable: true, enumerable: true, configurable: true }, [Symbol(Symbol.toStringTag)]: { value: 'global', writable: false, enumerable: false, configurable: true } }
浏览器环境和 node.js 环境全局对象属性对比:
既然列出了浏览器和 node.js 的全局对象属性,那就稍微对比一下在 node.js 环境中多了哪些属性吧。
// 在 node.js 环境中, 通过 Object.getOwnPropertyNames(globalThis) 得到以下 NodeGlobalThisPropsNames var NodeGlobalThisPropsNames = [ 'Object', 'Function', 'Array', 'Number', 'parseFloat', 'parseInt', 'Infinity', 'NaN', 'undefined', 'Boolean', 'String', 'Symbol', 'Date', 'Promise', 'RegExp', 'Error', 'EvalError', 'RangeError', 'ReferenceError', 'SyntaxError', 'TypeError', 'URIError', 'globalThis', 'JSON', 'Math', 'console', 'Intl', 'ArrayBuffer', 'Uint8Array', 'Int8Array', 'Uint16Array', 'Int16Array', 'Uint32Array', 'Int32Array', 'Float32Array', 'Float64Array', 'Uint8ClampedArray', 'BigUint64Array', 'BigInt64Array', 'DataView', 'Map', 'BigInt', 'Set', 'WeakMap', 'WeakSet', 'Proxy', 'Reflect', 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', 'escape', 'unescape', 'eval', 'isFinite', 'isNaN', 'SharedArrayBuffer', 'Atomics', 'WebAssembly', 'global', 'process', 'Buffer', 'URL', 'URLSearchParams', 'TextEncoder', 'TextDecoder', 'clearInterval', 'clearTimeout', 'setInterval', 'setTimeout', 'queueMicrotask', 'clearImmediate', 'setImmediate' ] // 在浏览器环境中(本例子为 google),获得以下 googleGlobalThisPropsNames // 大概有近千个属性,由于篇幅关系就不一一列出了,可以参考上面的 浏览器中的全局对象的属性 var googleGlobalThisPropsNames = Object.getOwnPropertyNames(globalThis) // 过滤出 node.js 独有的全局对象属性 var nodeProps = NodeGlobalThisPropsNames var webProps = googleGlobalThisPropsNames var noRepProps = nodeProps.filter(i=>webProps.indexOf(i)===-1) // 打印得到 noRepProps = ['global','process','Buffer','clearImmediate','setImmediate']
得到过滤后的 node.js 全局属性:
- global 用于指向全局对象。
- clearImmediate 和 setImmediate 是用于执行回调函数的定时器,一个 set 一个 clear 和其他定时器使用相似,其实在新版的 IE 已经被提出,但由于各种因素应该不会成为标准。
- process 提供了有关当前 Node.js 进程的信息并对其进行控制。
- Buffer 用于以字节序列的形式来表示二进制数据。 Uint8Array 类的子类。
全局对象的常见属性:
Infinity
功能:代表正的无穷大的数值。
注意:Infinity代表了超出JavaScript处理范围的数值。也就是说JS无法处理的数值都是Infinity。实践证明,JS所能处理的最大值是1.7976931348623157e+308,而最小值是5e-324。
示例:
console.log(6/0); //Infinity console.log(-6/0); //-Infinity console.log(0/0); //NaN console.log(1.7976931348623157E+10308); //Infinity console.log(-1.7976931348623157E+10308); //-Infinity
NaN
功能:代表非数字的值。
注意:请使用 isNaN() 方法来判断一个值是否是数字,原因是 NaN 与所有值都不相等,包括它自己。
示例:
var a = Number('100'); var b = Number('hello world'); console.log(a); //100 console.log(b); //NaN console.log(isNaN(a)); //false console.log(isNaN(b)); //true
Undefined
功能:代表未定义的值。
注意:判断一个变量是否未定义,只能用 === undefined 运算来测试,因为 == 运算符会认为 undefined 值等价于 null,即undefined == null会返回true。null 表示无值,而 undefined 表示一个未声明的变量,或已声明但没有赋值的变量,或一个并不存在的对象属性。
示例:
var a; var b = ''; var c = null; console.log(a === undefined); //true console.log(b === undefined); //false console.log(c == undefined); //true
全局对象的常见方法:
1、encodeURI(URIString)
功能:
- 将字符串作为URI进行编码,返回值为URIstring 的副本。
- 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
- 该方法的目的是对 URI 进行完整的编码,因此对以下在 URI 中具有特殊含义的 ASCII 标点符号,encodeURI() 函数是不会进行转义的:;/?:@&=+$,#
- 提示:如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。
参数:
- URIString(必须):一个待编码的字符串。
示例:
console.log(encodeURI('http://www.baidu.com')); //http://www.baidu.com console.log(encodeURI('http://www.baidu.com/my mind')); //http://www.baidu.com/my%20mind console.log(encodeURI(',/?:@&=+$#')); //,/?:@&=+$#
2、encodeURIComponent(URIString)
功能:
- 将字符串作为URI组件进行编码,返回值为URIstring的副本。
- 该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( ) 。
- 其他字符(比如 :;/?:@&=+$,# 这些用于分隔 URI 组件的标点符号),都是由一个或多个十六进制的转义序列替换的。
参数:
- URIString(必须):一个待编码的字符串。
注意:encodeURI和encodeURIComponent的区别:
- 它们都是编码URL,唯一区别就是编码的字符范围,其中encodeURI方法不会对下列字符编码 ASCII字母、数字、~!@#$&*()=:/,;?+'
- encodeURIComponent方法不会对下列字符编码 ASCII字母、数字、~!*()'
- 所以encodeURIComponent比encodeURI编码的范围更大。
- 实际例子来说,encodeURIComponent会把 http:// 编码成 http%3A%2F%2F 而encodeURI却不会。
- 相应的,存在decodeURI()和decodeURIComponent是用来解码的,逆向操作。
示例:
// 当你需要编码整个URL,然后使用这个URL,则使用encodeURI。 console.log(encodeURI('http://www.baidu.com/home/some other thing')); //编码后为:http://www.baidu.com/home/some%20other%20thing; 其中,空格被编码成了%20 //但是如果你用了encodeURIComponent console.log(encodeURIComponent('http://www.baidu.com/home/some other thing')); //http%3A%2F%2Fwww.baidu.com%2Fhome%2Fsome%20other%20thing 连 "/" 都被编码了,整个URL已经没法用了 // 当你需要编码URL中的参数时,那么使用encodeURIComponent。 var param = "http://www.baidu.com/home/"; //param为参数 param = encodeURIComponent(param); var url = "http://www.baidu.com?next=" + param; console.log(url) //'http://www.baidu.com?next=http%3A%2F%2Fwww.baidu.com%2Fhome%2F' //显然,参数中的 "/" 被编码了,而如果用encodeURI肯定要出问题,因为后面的/是需要编码的。
3、parseInt(string,radix)
功能:解析一个字符串,并返回一个整数。
参数:
- string(必须):待解析的字符串
- radix(可选):表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
示例:
console.log(parseInt('10')); //10 console.log(parseInt('11',9)); //10 (9+1) console.log(parseInt('11',2)); //3 (2+1) console.log(parseInt('17',8)); //15 (8+7) console.log(parseInt('1f',16)); //31 (16+15) console.log(parseInt('010')); //10 console.log(parseInt('0x0011')); //17
4、parseFloat()
功能:解析一个字符串,并返回一个浮点数。该函数指定字符串中的首个字符是否是数字。如果是,则对字符串进行解析,直到到达数字的末端为止。
参数:
- string(必须):待解析的字符串
注意:开头和结尾的空格是允许的。如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。如果只想解析数字的整数部分,请使用 parseInt() 方法。
示例:
console.log(parseFloat('10')); //10 console.log(parseFloat('10.00')); //10 console.log(parseFloat('10.33')); //10.33 console.log(parseFloat(' 60 ')); //60 首尾的空格会忽略 console.log(parseFloat('23 34 45')); //23 中间的空格不会忽略,会中断 console.log(parseFloat('23 years')); //23 console.log(parseFloat('i am 23')); //NaN
5、isFinite(number)
功能:用于检查其参数是否是无穷大。
参数:
- number(必须):待检测数字。
- 如果 number 是有限数字(或可转换为有限数字),那么返回 true。否则,如果 number 是 NaN(非数字),或者是正、负无穷大的数,则返回 false。
示例:
console.log(isFinite(123)); //true console.log(isFinite(-1.23)); //true console.log(isFinite(5-2)); //true console.log(isFinite(0)); //true console.log(isFinite(0/0)); //false console.log(isFinite('Hello')); //false
6、isNaN(number)
功能:用于检查其参数是否为非数字值。
参数:
- number(必须):待检测数字。
- 如果 number 是非数字值 NaN(或者能被转换成NaN),返回 true,否则返回 false。
注意:isNaN() 函数通常用于检测 parseFloat() 和 parseInt() 的结果,以判断它们表示的是否是合法的数字。当然也可以用 isNaN() 函数来检测算数错误,比如用 0 作除数的情况。
示例:
console.log(isNaN(123)); //false console.log(isNaN(-1.23)); //false console.log(isNaN(5-2)); //false console.log(isNaN(0)); //false console.log(isNaN(0/0)); //true console.log(isNaN('Hello')); //true
7、Number(object)
功能:把对象的值转换为数字。
参数:
- object(必须):待转换的对象。
- 如果参数是 Date 对象,Number() 返回从1970年1月1日至今的毫秒数,即时间戳。如果对象的值无法转换为数字,那么 Number() 函数返回 NaN。
示例:
console.log(Number(new Boolean(true))); //1 console.log(Number(new Boolean(false))); //0 console.log(Number(new Date())); //1506266494726 console.log(Number(new String('999'))); //999 console.log(Number(new String('999 888'))); //NaN
8、String(object)
功能:把对象的值转换为字符串。
参数:
- object(必须):待转换的对象。
示例:
console.log(String(new Boolean(true))); //'true' console.log(String(new Boolean(false))); //'false' console.log(String(new Date())); //'Sun Sep 24 2017 23:25:43 GMT+0800 (CST)' console.log(String(new String('999'))); //'999' console.log(String(new String('999 888'))); //'999 888' console.log(String(12345)); //'12345'
JavaScript 中的三大对象 (本地对象、内置对象、 宿主对象)
本地对象
- Object 对象属性和方法
- String 对象属性和方法
- Array 对象属性和方法
- Date 对象属性和方法
- Number 对象属性和方法
- RegExp 对象属性和方法
- Function 对象属性和方法
- Boolean 对象属性和方法
- Error 对象属性和方法
内置对象
宿主对象