The register()
method of FinalizationRegistry
instances registers an value with this FinalizationRegistry
so that if the value is garbage-collected, the registry's callback may get called.
The register()
method of FinalizationRegistry
instances registers an value with this FinalizationRegistry
so that if the value is garbage-collected, the registry's callback may get called.
register(target, heldValue) register(target, heldValue, unregisterToken)
target
The target value to register.
heldValue
The value to pass to the finalizer for this target
. This cannot be the target
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 not undefined
), this must be an object or a non-registered symbol. If not provided, the target cannot be unregistered.
None (undefined
).
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 as heldvalue
(target === heldValue
)unregisterToken
is not an object or a non-registered symbol
See the Avoid where possible and Notes on cleanup callbacks sections of the FinalizationRegistry
page for important caveats.
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" });
Desktop | Mobile | Server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | Deno | Node.js | ||
register |
84 | 84 | 79 | 70 | 14.1 | 84 | 79 | 60 | 14.5 | 14.0 | 84 | 1.0 | 14.6.0 |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry/register