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.

Die register()-Methode von FinalizationRegistry-Instanzen registriert einen Wert bei diesem FinalizationRegistry, sodass, wenn der Wert vom Garbage Collector gesammelt wird, der Rückruf des Registrierers möglicherweise aufgerufen wird.

Syntax

js
register(target, heldValue)
register(target, heldValue, unregisterToken)

Parameter

target

Der Zielwert, der registriert werden soll.

heldValue

Der Wert, der an den Finalizer für dieses target übergeben werden soll. Dies kann nicht das target selbst sein, kann aber alles andere sein, einschließlich Funktionen und Primitiven.

unregisterToken Optional

Ein Token, das später mit der unregister-Methode verwendet werden kann, um den Zielwert abzumelden. Wenn angegeben (und nicht undefined), muss dies ein Objekt oder ein nicht registriertes Symbol sein. Wenn nicht angegeben, kann das Ziel nicht abgemeldet werden.

Rückgabewert

Keiner (undefined).

Ausnahmen

TypeError

Wird in einem der folgenden Fälle ausgelöst:

  • target ist kein Objekt oder ein nicht registriertes Symbol (Objekte im Gegensatz zu Primitiven; Funktionen sind ebenfalls Objekte)
  • target ist das gleiche wie heldValue (target === heldValue)
  • unregisterToken ist kein Objekt oder ein nicht registriertes Symbol

Beschreibung

Siehe die Abschnitte Nach Möglichkeit vermeiden und Hinweise zu Bereinigung-Rückrufen auf der FinalizationRegistry-Seite für wichtige Hinweise.

Beispiele

Verwendung von register

Das Folgende registriert den Wert, auf den target verweist, und übergibt den gehaltenen Wert "some value" sowie das Ziel selbst als Abmeldungstoken:

js
registry.register(target, "some value", target);

Das Folgende registriert den Wert, auf den target verweist, übergibt ein anderes Objekt als gehaltenen Wert und übergibt kein Abmeldungstoken (was bedeutet, dass target nicht abgemeldet werden kann):

js
registry.register(target, { useful: "info about target" });

Spezifikationen

Specification
ECMAScript Language Specification
# sec-finalization-registry.prototype.register

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch