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 thetarget
itself but can be anything else, including functions and primitives. unregisterToken
Optional-
A token that may be used with the
unregister
method 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:
target
is not an object or a non-registered symbol (object as opposed to primitives; functions are objects as well)target
is the same asheldValue
(target === heldValue
)unregisterToken
is 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…