FinalizationRegistry.prototype.register()
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.
* Some parts of this feature may have varying levels of support.
The register() method of FinalizationRegistry instances registers a value with this FinalizationRegistry so that if the value is garbage-collected, the registry's callback may get called.
Syntax
register(target, heldValue)
register(target, heldValue, unregisterToken)
Parameters
target-
The target value to register.
heldValue-
The value to pass to the finalizer for this
target. This cannot be thetargetitself but can be anything else, including functions and primitives. unregisterTokenOptional-
A token that may be used with the
unregistermethod later to unregister the target value. If provided (and notundefined), this must be an object or a non-registered symbol. If not provided, the target cannot be unregistered.
Return value
None (undefined).
Exceptions
TypeError-
Thrown in one of the following cases:
targetis not an object or a non-registered symbol (object as opposed to primitives; functions are objects as well)targetis the same asheldValue(target === heldValue)unregisterTokenis not an object or a non-registered symbol
Description
See the Avoid where possible
and Notes on cleanup callbacks
sections of the FinalizationRegistry page for important caveats.
Examples
>Using register
The following registers the value referenced by target,
passing in the held value "some value" and passing the target itself
as the unregistration token:
registry.register(target, "some value", target);
The following registers the value referenced by target,
passing in another object as the held value, and not passing in any unregistration token
(which means target can't be unregistered):
registry.register(target, { useful: "info about target" });
Specifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-finalization-registry.prototype.register> |
Browser compatibility
Loading…