FinalizationRegistry.prototype.register()
**register()
** 方法是 FinalizationRegistry
实例的方法,用于将一个值注册到此 FinalizationRegistry
,以便如果该值被垃圾回收,注册表中的回调可能会被调用。
语法
js
register(target, heldValue)
register(target, heldValue, unregisterToken)
参数
target
-
要注册的目标值。
heldValue
-
要传递给此
target
的最终化器的值。它不能是target
本身,但可以是任何其他东西,包括函数和原始值。 unregisterToken
可选-
一个令牌,可用于稍后与
unregister
方法一起取消注册目标值。如果提供(且不为undefined
),则它必须是对象或 未注册的符号。如果没有提供,则无法取消注册目标。
返回值
无 (undefined
).
异常
描述
有关重要注意事项,请参阅 尽可能避免 和 清理回调的注意事项 部分的 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 的浏览器中加载。