unregister
unregisters a target object from a
FinalizationRegistry
实例。
registry.unregister(unregisterToken);
unregisterToken
register
method when registering the target object.
undefined
.
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.
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;
}
}
}
| 规范 |
|---|
|
WeakRefs
The definition of 'FinalizationRegistry.prototype.unregister' in that specification. |
| Desktop | Mobile | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
unregister
|
Chrome 84 | Edge 84 | Firefox 79 | IE No | Opera No | Safari No | WebView Android 84 | Chrome Android 84 | Firefox Android No | Opera Android No | Safari iOS No | Samsung Internet Android No |
nodejs
13.0.0
Disabled
|
完整支持
不支持
用户必须明确启用此特征。
FinalizationRegistry
FinalizationRegistry.prototype.register()
FinalizationRegistry.prototype.unregister()
Function
Object
Object.prototype.__defineGetter__()
Object.prototype.__defineSetter__()
Object.prototype.__lookupGetter__()
Object.prototype.__lookupSetter__()
Object.prototype.hasOwnProperty()
Object.prototype.isPrototypeOf()
Object.prototype.propertyIsEnumerable()
Object.prototype.toLocaleString()
Object.prototype.toSource()
Object.prototype.toString()
Object.prototype.valueOf()
Object.setPrototypeOf()