FinalizationRegistry.prototype.register()

**register()** 方法是 FinalizationRegistry 实例的方法,用于将一个值注册到此 FinalizationRegistry,以便如果该值被垃圾回收,注册表中的回调可能会被调用。

语法

js
register(target, heldValue)
register(target, heldValue, unregisterToken)

参数

target

要注册的目标值。

heldValue

要传递给此 target 的最终化器的值。它不能是 target 本身,但可以是任何其他东西,包括函数和原始值。

unregisterToken 可选

一个令牌,可用于稍后与 unregister 方法一起取消注册目标值。如果提供(且不为 undefined),则它必须是对象或 未注册的符号。如果没有提供,则无法取消注册目标。

返回值

无 (undefined).

异常

TypeError

在以下情况之一中抛出

  • target 不是对象或 未注册的符号(对象而不是原始值;函数也是对象)
  • targetheldvalue 相同 (target === heldValue)
  • unregisterToken 不是对象或 未注册的符号

描述

有关重要注意事项,请参阅 尽可能避免清理回调的注意事项 部分的 FinalizationRegistry 页面。

示例

使用 register

以下代码注册了 target 引用的值,传入保持的值 "some value",并将目标本身作为取消注册令牌传入

js
registry.register(target, "some value", target);

以下代码注册了 target 引用的值,传入另一个对象作为保持的值,并且不传入任何取消注册令牌(这意味着 target 无法取消注册)

js
registry.register(target, { useful: "info about target" });

规范

规范
ECMAScript 语言规范
# sec-finalization-registry.prototype.register

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。

另请参阅