全局对象
这些对象在所有模块中都可用。
以下变量可能看起来是全局的,但实际上不是。它们仅存在于 CommonJS 模块 的作用域内:
这里列出的对象是 Node.js 特有的。还有一些 内置对象 是 JavaScript 语言本身的一部分,它们也是全局可访问的。
类: AbortController
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 不再是实验性的。 |
v15.0.0, v14.17.0 | 添加于:v15.0.0, v14.17.0 |
一个用于在选定的基于 Promise
的 API 中发出取消信号的实用程序类。该 API 基于 Web API AbortController
。
const ac = new AbortController();
ac.signal.addEventListener('abort', () => console.log('Aborted!'),
{ once: true });
ac.abort();
console.log(ac.signal.aborted); // 打印 true
abortController.abort([reason])
[历史]
版本 | 变更 |
---|---|
v17.2.0, v16.14.0 | 添加了新的可选 reason 参数。 |
v15.0.0, v14.17.0 | 添加于:v15.0.0, v14.17.0 |
reason
<any> 一个可选的原因,可以在AbortSignal
的reason
属性上检索。
触发中止信号,导致 abortController.signal
发出 'abort'
事件。
abortController.signal
添加于: v15.0.0, v14.17.0
- 类型: <AbortSignal>
类: AbortSignal
添加于: v15.0.0, v14.17.0
- 继承自: <EventTarget>
当调用 abortController.abort()
方法时,AbortSignal
用于通知观察者。
静态方法: AbortSignal.abort([reason])
[历史]
版本 | 变更 |
---|---|
v17.2.0, v16.14.0 | 添加了新的可选 reason 参数。 |
v15.12.0, v14.17.0 | 添加于: v15.12.0, v14.17.0 |
reason
: <any>- 返回值: <AbortSignal>
返回一个已中止的 AbortSignal
。
静态方法: AbortSignal.timeout(delay)
添加于: v17.3.0, v16.14.0
delay
<number> 在触发 AbortSignal 之前等待的毫秒数。
返回一个新的 AbortSignal
,它将在 delay
毫秒后被中止。
静态方法: AbortSignal.any(signals)
添加于: v20.3.0, v18.17.0
signals
<AbortSignal[]> 用于组合新的AbortSignal
的AbortSignal
数组。
返回一个新的 AbortSignal
,如果提供的任何信号被中止,它将被中止。 它的 abortSignal.reason
将被设置为导致其中止的 signals
之一。
事件: 'abort'
添加于: v15.0.0, v14.17.0
当调用 abortController.abort()
方法时,会触发 'abort'
事件。 该回调函数会被调用,带有一个对象参数,该对象参数带有一个 type
属性,其值为 'abort'
:
const ac = new AbortController();
// 使用 onabort 属性...
ac.signal.onabort = () => console.log('aborted!');
// 或者 EventTarget API...
ac.signal.addEventListener('abort', (event) => {
console.log(event.type); // 打印 'abort'
}, { once: true });
ac.abort();
与 AbortSignal
关联的 AbortController
仅触发一次 'abort'
事件。 我们建议代码在添加 'abort'
事件监听器之前检查 abortSignal.aborted
属性是否为 false
。
附加到 AbortSignal
的任何事件监听器都应使用 { once: true }
选项(或者,如果使用 EventEmitter
API 附加监听器,则使用 once()
方法),以确保在处理 'abort'
事件后立即删除事件监听器。 如果不这样做,可能会导致内存泄漏。
abortSignal.aborted
加入于: v15.0.0, v14.17.0
- 类型: <boolean> 当
AbortController
被中止后为 True。
abortSignal.onabort
加入于: v15.0.0, v14.17.0
- 类型: <Function>
一个可选的回调函数,可以由用户代码设置,以便在 abortController.abort()
函数被调用时得到通知。
abortSignal.reason
加入于: v17.2.0, v16.14.0
- 类型: <any>
触发 AbortSignal
时指定的可选原因。
const ac = new AbortController();
ac.abort(new Error('boom!'));
console.log(ac.signal.reason); // Error: boom!
abortSignal.throwIfAborted()
加入于: v17.3.0, v16.17.0
如果 abortSignal.aborted
为 true
,则抛出 abortSignal.reason
。
类: Blob
加入于: v18.0.0
请参阅 <Blob>。
类: Buffer
加入于: v0.1.103
用于处理二进制数据。 参阅 buffer 部分。
类: ByteLengthQueuingStrategy
加入于: v18.0.0
一个浏览器兼容的 ByteLengthQueuingStrategy
实现。
__dirname
这个变量可能看起来是全局的,但实际上不是。 参阅 __dirname
。
__filename
这个变量可能看起来是全局的,但实际上不是。 参阅 __filename
。
atob(data)
加入于: v16.0.0
buffer.atob()
的全局别名。
BroadcastChannel
添加于: v18.0.0
请参阅 <BroadcastChannel>。
btoa(data)
添加于: v16.0.0
buffer.btoa()
的全局别名。
clearImmediate(immediateObject)
添加于: v0.9.1
clearImmediate
在 timers 部分中描述。
clearInterval(intervalObject)
添加于: v0.0.1
clearInterval
在 timers 部分中描述。
clearTimeout(timeoutObject)
添加于: v0.0.1
clearTimeout
在 timers 部分中描述。
CloseEvent
添加于: v23.0.0
CloseEvent
类。有关更多详细信息,请参阅 CloseEvent
。
CloseEvent
的浏览器兼容实现。使用 --no-experimental-websocket
命令行标志禁用此 API。
类: CompressionStream
添加于: v18.0.0
CompressionStream
的浏览器兼容实现。
console
添加于: v0.1.100
用于打印到 stdout 和 stderr。请参阅 console
部分。
类: CountQueuingStrategy
添加于: v18.0.0
CountQueuingStrategy
的浏览器兼容实现。
Crypto
[历史记录]
版本 | 变更 |
---|---|
v23.0.0 | 不再是实验性的。 |
v19.0.0 | 不再受 --experimental-global-webcrypto CLI 标志控制。 |
v17.6.0, v16.15.0 | 添加于: v17.6.0, v16.15.0 |
<Crypto> 的浏览器兼容实现。 仅当 Node.js 二进制文件在编译时包含对 node:crypto
模块的支持时,此全局变量才可用。
crypto
[历史记录]
版本 | 变更 |
---|---|
v23.0.0 | 不再是实验性的。 |
v19.0.0 | 不再受 --experimental-global-webcrypto CLI 标志控制。 |
v17.6.0, v16.15.0 | 添加于: v17.6.0, v16.15.0 |
Web Crypto API 的浏览器兼容实现。
CryptoKey
[历史记录]
版本 | 变更 |
---|---|
v23.0.0 | 不再是实验性的。 |
v19.0.0 | 不再受 --experimental-global-webcrypto CLI 标志控制。 |
v17.6.0, v16.15.0 | 添加于: v17.6.0, v16.15.0 |
<CryptoKey> 的浏览器兼容实现。 仅当 Node.js 二进制文件在编译时包含对 node:crypto
模块的支持时,此全局变量才可用。
CustomEvent
[历史记录]
版本 | 变更 |
---|---|
v23.0.0 | 不再是实验性的。 |
v22.1.0, v20.13.0 | CustomEvent 现在是稳定的。 |
v19.0.0 | 不再受 --experimental-global-customevent CLI 标志控制。 |
v18.7.0, v16.17.0 | 添加于: v18.7.0, v16.17.0 |
CustomEvent
Web API 的浏览器兼容实现。
类: DecompressionStream
添加于: v18.0.0
一个浏览器兼容的 DecompressionStream
实现。
Event
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 不再是实验性的。 |
v15.0.0 | 添加于: v15.0.0 |
一个浏览器兼容的 Event
类实现。 详情请查看 EventTarget
和 Event
API。
EventSource
添加于: v22.3.0, v20.18.0
[Stable: 1 - Experimental]
Stable: 1 稳定性: 1 - 实验性的。 使用 --experimental-eventsource
CLI 标志启用此 API。
一个浏览器兼容的 EventSource
类实现。
EventTarget
[历史]
版本 | 变更 |
---|---|
v15.4.0 | 不再是实验性的。 |
v15.0.0 | 添加于: v15.0.0 |
一个浏览器兼容的 EventTarget
类实现。 详情请查看 EventTarget
和 Event
API。
exports
这个变量可能看起来是全局的,但实际上不是。 请查看 exports
。
fetch
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性的。 |
v18.0.0 | 不再需要 --experimental-fetch CLI 标志。 |
v17.5.0, v16.15.0 | 添加于: v17.5.0, v16.15.0 |
一个浏览器兼容的 fetch()
函数实现。
类: File
添加于: v20.0.0
请查看 <File>。
类 FormData
[历史记录]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性的。 |
v18.0.0 | 不再需要 --experimental-fetch 命令行标志。 |
v17.6.0, v16.15.0 | 添加于:v17.6.0, v16.15.0 |
一个浏览器兼容的 <FormData> 实现。
global
添加于: v0.1.27
[稳定: 3 - 遗留]
稳定: 3 稳定性: 3 - 遗留。请使用 globalThis
代替。
- <Object> 全局命名空间对象。
在浏览器中,顶层作用域传统上是全局作用域。 这意味着 var something
将定义一个新的全局变量,但在 ECMAScript 模块中除外。 在 Node.js 中,情况有所不同。 顶层作用域不是全局作用域;Node.js 模块中的 var something
将是该模块的局部变量,无论它是 CommonJS 模块 还是 ECMAScript 模块。
类 Headers
[历史记录]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性的。 |
v18.0.0 | 不再需要 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | 添加于:v17.5.0, v16.15.0 |
一个浏览器兼容的 <Headers> 实现。
localStorage
添加于: v22.4.0
一个浏览器兼容的 localStorage
实现。 数据以未加密的形式存储在 --localstorage-file
命令行标志指定的文件中。 可以存储的最大数据量为 10 MB。 不支持在 Web Storage API 之外修改此数据。 使用 --experimental-webstorage
命令行标志启用此 API。 在服务器环境中使用时,localStorage
数据不是按用户或按请求存储的,而是在所有用户和请求之间共享的。
MessageChannel
Added in: v15.0.0
MessageChannel
类。 更多详情请参见 MessageChannel
。
MessageEvent
Added in: v15.0.0
MessageEvent
类。 更多详情请参见 MessageEvent
。
MessagePort
Added in: v15.0.0
MessagePort
类。 更多详情请参见 MessagePort
。
module
这个变量看起来像是全局的,但实际上不是。 更多详情请参见 module
。
Navigator
Added in: v21.0.0
[Stable: 1 - Experimental]
Stable: 1 稳定性: 1.1 - 活跃开发中。 使用 --no-experimental-global-navigator
CLI 标志禁用此 API。
Navigator API 的部分实现。
navigator
Added in: v21.0.0
[Stable: 1 - Experimental]
Stable: 1 稳定性: 1.1 - 活跃开发中。 使用 --no-experimental-global-navigator
CLI 标志禁用此 API。
window.navigator
的部分实现。
navigator.hardwareConcurrency
Added in: v21.0.0
navigator.hardwareConcurrency
只读属性返回当前 Node.js 实例可用的逻辑处理器数量。
console.log(`此进程运行在 ${navigator.hardwareConcurrency} 个逻辑处理器上`);
navigator.language
Added in: v21.2.0
navigator.language
只读属性返回一个字符串,表示 Node.js 实例的首选语言。 该语言将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言确定。
该值表示在 RFC 5646 中定义的语言版本。
在没有 ICU 的构建中的回退值为 'en-US'
。
console.log(`Node.js 实例的首选语言具有标签 '${navigator.language}'`);
navigator.languages
添加于: v21.2.0
- {Array
navigator.languages
只读属性返回一个字符串数组,表示 Node.js 实例的首选语言。 默认情况下,navigator.languages
仅包含 navigator.language
的值,该值将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言确定。
在没有 ICU 的构建上的回退值为 ['en-US']
。
console.log(`首选语言为 '${navigator.languages}'`);
navigator.platform
添加于: v21.2.0
navigator.platform
只读属性返回一个字符串,用于标识 Node.js 实例正在运行的平台。
console.log(`此进程运行在 ${navigator.platform}`);
navigator.userAgent
添加于: v21.1.0
navigator.userAgent
只读属性返回由运行时名称和主版本号组成的用户代理。
console.log(`用户代理是 ${navigator.userAgent}`); // 输出 "Node.js/21"
PerformanceEntry
添加于: v19.0.0
PerformanceEntry
类。 更多详情请参阅 PerformanceEntry
。
PerformanceMark
添加于: v19.0.0
PerformanceMark
类。 更多详情请参阅 PerformanceMark
。
PerformanceMeasure
添加于: v19.0.0
PerformanceMeasure
类。 更多详情请参阅 PerformanceMeasure
。
PerformanceObserver
添加于: v19.0.0
PerformanceObserver
类。 更多详情请参阅 PerformanceObserver
。
PerformanceObserverEntryList
添加于: v19.0.0
PerformanceObserverEntryList
类。 更多详情请参阅 PerformanceObserverEntryList
。
PerformanceResourceTiming
添加于: v19.0.0
PerformanceResourceTiming
类。 更多详情请参阅 PerformanceResourceTiming
。
performance
添加于: v16.0.0
process
添加于: v0.1.7
进程对象。 参见 process
对象 章节。
queueMicrotask(callback)
添加于: v11.0.0
callback
<Function> 要排队的函数。
queueMicrotask()
方法将一个微任务排队以调用 callback
。 如果 callback
抛出异常,则将发出 process
对象 的 'uncaughtException'
事件。
微任务队列由 V8 管理,并且可以使用与由 Node.js 管理的 process.nextTick()
队列类似的方式来使用。 在 Node.js 事件循环的每一轮中,始终在微任务队列之前处理 process.nextTick()
队列。
// 在这里,`queueMicrotask()` 用于确保“load”事件始终
// 异步发出,因此具有一致性。 使用
// 这里的 `process.nextTick()` 将导致“load”事件始终在发出
// 在任何其他 promise 作业之前。
DataHandler.prototype.load = async function load(key) {
const hit = this._cache.get(key);
if (hit !== undefined) {
queueMicrotask(() => {
this.emit('load', hit);
});
return;
}
const data = await fetchData(key);
this._cache.set(key, data);
this.emit('load', data);
};
类: ReadableByteStreamController
添加于: v18.0.0
ReadableByteStreamController
的浏览器兼容实现。
类: ReadableStream
添加于: v18.0.0
ReadableStream
的浏览器兼容实现。
类: ReadableStreamBYOBReader
添加于: v18.0.0
ReadableStreamBYOBReader
的浏览器兼容实现。
类: ReadableStreamBYOBRequest
添加于: v18.0.0
ReadableStreamBYOBRequest
的浏览器兼容实现。
类: ReadableStreamDefaultController
添加于: v18.0.0
ReadableStreamDefaultController
的浏览器兼容实现。
类: ReadableStreamDefaultReader
添加于: v18.0.0
ReadableStreamDefaultReader
的浏览器兼容实现。
require()
此变量可能看起来是全局的,但实际上不是。请参阅 require()
。
Response
[历史]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性的。 |
v18.0.0 | 不再需要 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | 添加于: v17.5.0, v16.15.0 |
<Response> 的浏览器兼容实现。
Request
[历史记录]
版本 | 变更 |
---|---|
v21.0.0 | 不再是实验性的。 |
v18.0.0 | 不再需要 --experimental-fetch 命令行标志。 |
v17.5.0, v16.15.0 | 添加于: v17.5.0, v16.15.0 |
与浏览器兼容的<Request>实现。
sessionStorage
添加于: v22.4.0
与浏览器兼容的sessionStorage
实现。 数据存储在内存中,存储配额为 10 MB。 sessionStorage
数据仅在当前运行的进程中持久存在,并且不在工作线程之间共享。
setImmediate(callback[, ...args])
添加于: v0.9.1
setImmediate
在定时器章节中描述。
setInterval(callback, delay[, ...args])
添加于: v0.0.1
setInterval
在定时器章节中描述。
setTimeout(callback, delay[, ...args])
添加于: v0.0.1
setTimeout
在定时器章节中描述。
Class: Storage
添加于: v22.4.0
与浏览器兼容的Storage
实现。 使用--experimental-webstorage
命令行标志启用此 API。
structuredClone(value[, options])
添加于: v17.0.0
WHATWG structuredClone
方法。
SubtleCrypto
[历史记录]
版本 | 变更 |
---|---|
v19.0.0 | 不再受 --experimental-global-webcrypto CLI 标志控制。 |
v17.6.0, v16.15.0 | 添加于:v17.6.0, v16.15.0 |
<SubtleCrypto> 的一个浏览器兼容实现。只有在编译 Node.js 二进制文件时包含了对 node:crypto
模块的支持,这个全局变量才可用。
DOMException
添加于: v17.0.0
WHATWG DOMException
类。 更多详情请参阅 DOMException
。
TextDecoder
添加于: v11.0.0
WHATWG TextDecoder
类。 请参阅 TextDecoder
部分。
类: TextDecoderStream
添加于: v18.0.0
TextDecoderStream
的一个浏览器兼容实现。
TextEncoder
添加于: v11.0.0
WHATWG TextEncoder
类。 请参阅 TextEncoder
部分。
类: TextEncoderStream
添加于: v18.0.0
TextEncoderStream
的一个浏览器兼容实现。
类: TransformStream
添加于: v18.0.0
TransformStream
的一个浏览器兼容实现。
类: TransformStreamDefaultController
添加于: v18.0.0
TransformStreamDefaultController
的一个浏览器兼容实现。
URL
Added in: v10.0.0
WHATWG URL
类。 请参见 URL
部分。
URLSearchParams
Added in: v10.0.0
WHATWG URLSearchParams
类。 请参见 URLSearchParams
部分。
WebAssembly
Added in: v8.0.0
该对象充当所有 W3C WebAssembly 相关功能的命名空间。 有关用法和兼容性,请参见 Mozilla 开发者网络。
WebSocket
[历史]
版本 | 变更 |
---|---|
v22.4.0 | 不再是实验性的。 |
v22.0.0 | 不再位于 --experimental-websocket 命令行标志之后。 |
v21.0.0, v20.10.0 | Added in: v21.0.0, v20.10.0 |
与浏览器兼容的 WebSocket
实现。 使用 --no-experimental-websocket
命令行标志禁用此 API。
类: WritableStream
Added in: v18.0.0
与浏览器兼容的 WritableStream
实现。
类: WritableStreamDefaultController
Added in: v18.0.0
与浏览器兼容的 WritableStreamDefaultController
实现。
类: WritableStreamDefaultWriter
Added in: v18.0.0
与浏览器兼容的 WritableStreamDefaultWriter
实现。