FinalizationRegistry.prototype.register()
Baseline Широко доступно
Эта функция хорошо зарекомендовала себя и работает на множестве устройств и версий браузеров. Она доступна во всех браузерах с апреля 2021 года.
Метод register() экземпляров FinalizationRegistry регистрирует значение в этом FinalizationRegistry, чтобы, если значение будет собрано сборщиком мусора, мог быть вызван обратный вызов реестра.
Синтаксис
register(target, heldValue) register(target, heldValue, unregisterToken)
Параметры
-
target - Целевое значение для регистрации.
-
heldValue - Значение, которое будет передано финализатору для этого
target. Это не может быть самоtarget, но может быть чем угодно другим, включая функции и примитивы. -
unregisterTokenНеобязательно - Токен, который может быть использован с методом
unregisterпозже для отмены регистрации целевого значения. Если предоставлен (и неundefined), это должен быть объект или незарегистрированный символ. Если не предоставлен, отмена регистрации цели невозможна.
Возвращаемое значение
Нет (undefined).
Исключения
-
TypeError - Выбрасывается в одном из следующих случаев:
-
targetне является объектом или незарегистрированным символом (объект в отличие от примитивов; функции также являются объектами) -
targetсовпадает сheldValue(target === heldValue) -
unregisterTokenне является объектом или незарегистрированным символом
-
Описание
См. разделы Избегайте, когда это возможно и Примечания о обратных вызовах очистки на странице FinalizationRegistry для важных оговорок.
Примеры
Использование register
Следующий пример регистрирует значение, на которое ссылается target, передавая удерживаемое значение "some value" и само целевое значение в качестве токена отмены регистрации:
registry.register(target, "some value", target);
Следующий пример регистрирует значение, на которое ссылается target, передавая другой объект в качестве удерживаемого значения и не передавая токен отмены регистрации (что означает, что target не может быть отменен):
registry.register(target, { useful: "info about target" });
Спецификации
Совместимость с браузерами
| Настольные компьютеры | Мобильные устройства | Сервер | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on iOS | Samsung Internet | WebView Android | WebView on iOS | Bun | Deno | Node.js | |
register |
84 |
84 |
79 |
70 |
14.1 |
84 |
79 |
60 |
14.5 |
14.0 |
84 |
14.5 |
1.0.0 |
1.0 |
14.6.0 |
symbol_as_target |
109 |
109 |
146 |
95 |
16.4 |
109 |
146 |
74 |
16.4 |
21.0 |
109 |
16.4 |
1.0.0 |
1.28 |
20.0.0 |
См. также
© 2005–2025 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