The unregister
unregisters a target object from a FinalizationRegistry
instance.
Syntax
registry.unregister(unregisterToken);
Parameters
unregisterToken
- The token used with the
register
method when registering the target object.
Return value
undefined
.
Notes
When a target object has been reclaimed, it is no longer registered in the registry. There is no need to all unregister
in your cleanup callback. Only call unregister
if you haven't received a cleanup callback and no longer need to receive one.
Examples
Using unregister
This example shows registering a target object using that same object as the unregister token, then later unregistering it via unregister
:
class Thingy { #cleanup = label => { // ^^^^^−−−−− held value console.error( `The \`release\` method was never called for the object with the label "${label}"` ); }; #registry = new FinalizationRegistry(this.#cleanup); /** * Constructs a `Thingy` instance. Be sure to call `release` when you're done with it. * * @param label A label for the `Thingy`. */ constructor(label) { // vvvvv−−−−− held value this.#registry.register(this, label, this); // target −−−−−^^^^ ^^^^−−−−− unregister token } /** * Releases resources held by this `Thingy` instance. */ release() { this.#registry.unregister(this); // ^^^^−−−−− unregister token } }
This example shows registering a target object using a different object as its unregister token:
{ // ^^^^−−−−− held value console.error( `The \`release\` method was never called for the \`Thingy\` for the file "${file.name}"` ); }; #registry = new FinalizationRegistry(this.#cleanup); /** * Constructs a `Thingy` instance for the given file. Be sure to call `release` when you're done with it. * * @param filename The name of the file. */ constructor(filename) { this.#file = File.open(filename); // vvvvv−−−−− held value this.#registry.register(this, label, this.#file); // target −−−−−^^^^ ^^^^^^^^^^−−−−− unregister token } /** * Releases resources held by this `Thingy` instance. */ release() { if (this.#file) { this.#registry.unregister(this.#file); // ^^^^^^^^^^−−−−− unregister token File.close(this.#file); this.#file = null; } } }
Specifications
Specification |
---|
WeakRefs The definition of 'FinalizationRegistry.prototype.unregister' in that specification. |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | Server | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
unregister | Chrome Full support 84 | Edge Full support 84 | Firefox Full support 79 | IE No support No | Opera No support No | Safari No support No | WebView Android Full support 84 | Chrome Android Full support 84 | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No | nodejs
Full support
13.0.0
|
Legend
- Full support
- Full support
- No support
- No support
- User must explicitly enable this feature.
- User must explicitly enable this feature.