Spec-Zone.ru › JavaScript

FinalizationRegistry.prototype.unregister()

Baseline Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в различных версиях браузеров. Она доступна во всех браузерах с апреля 2021 года.

Метод unregister() экземпляров FinalizationRegistry отменяет регистрацию целевого значения из этого FinalizationRegistry.

Синтаксис

unregister(unregisterToken)

Параметры

unregisterToken
Токен, использованный с методом register() при регистрации целевого значения. Несколько ячеек, зарегистрированных с одним и тем же unregisterToken, будут отменены вместе.

Возвращаемое значение

Логическое значение, которое является true, если была отменена регистрация как минимум одной ячейки, и false, если не была отменена регистрация ни одной ячейки.

Исключения

TypeError
Выбрасывается, если unregisterToken не является объектом или незарегистрированным символом.

Описание

Когда целевое значение было освобождено, оно больше не зарегистрировано в реестре. Нет необходимости вызывать unregister в вашем обработчике очистки. Вызывайте unregister только в том случае, если вы не получили обработчик очистки и больше не нуждаетесь в его получении.

Примеры

Использование unregister

Этот пример показывает регистрацию целевого объекта с использованием того же объекта в качестве токена отмены регистрации, а затем его последующую отмену регистрации через unregister:

class Thingy {
  static #cleanup = (label) => {
    //               ^^^^^−−−−− held value
    console.error(
      `The "release" method was never called for the object with the label "${label}"`,
    );
  };
  #registry = new FinalizationRegistry(Thingy.#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
  }
}

Этот пример показывает регистрацию целевого объекта с использованием другого объекта в качестве его токена отмены регистрации:

class Thingy {
  static #cleanup = (file) => {
    //               ^^^^−−−−− held value
    console.error(
      `The "release" method was never called for the "Thingy" for the file "${file.name}"`,
    );
  };
  #registry = new FinalizationRegistry(Thingy.#cleanup);
  #file;

  /**
   * 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;
    }
  }
}

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-finalization-registry.prototype.unregister

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox Android Opera Android Safari на iOS Samsung Internet WebView Android WebView на iOS Bun Deno Node.js
unregister
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
Нет
95
16.4
109
Нет
74
16.4
21.0
109
16.4
1.0.0
1.28
20.0.0

См. также

  • FinalizationRegistry

© 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/unregister

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API