A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Proxy/revocable below:

Proxy.revocable() - JavaScript | MDN

Proxy.revocable()

Baseline Widely available

Статический метод Proxy.revocable() создаёт подлежащий отзыву объект Proxy.

Синтаксис
Proxy.revocable(target, handler)
Параметры
target

Целевой объект для оборачивания в Proxy. Это может быть любой объект (массив, функция или даже другой прокси).

handler

Объект, свойства которого являются функциями, которые определяют поведение proxy, когда с ним происходит действие.

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

Обычный объект с двумя свойствами:

proxy

Прокси объект, идентичный создаваемому с помощью вызова new Proxy(target, handler).

revoke

Функция без параметров для отзыва (выключения) proxy.

Описание

Фабричная функция Proxy.revocable() это то же самое, что конструктор Proxy(), но в дополнение к созданию прокси объекта она создаёт функцию revoke, которая может быть вызвана для отмены прокси. Прокси объект и функция revoke оборачиваются в обычный объект.

Функция revoke не принимает параметров и не зависит от значения this. Созданный объект proxy прикрепляется к функции revoke в виде приватного свойства, к которому функция revoke обращается при вызове (приватное свойство незаметно извне, но оно влияет на то, как происходит сбор мусора). Объект proxy не попадает в замыкание функции revoke (что делает сбор мусора proxy невозможным если revoke ещё существует).

После вызова функции revoke() прокси становится непригодным для использования: любое обращени к обработчику вызовет TypeError. Прокси, будучи однажды отозван, остаётся отозванным, и повторный вызов revoke() не имеет эффекта — фактически вызов revoke() отделяет объект proxy от функции revoke, и у неё больше нет доступа к объекту. Если на прокси больше нет ссылок, то он становится доступным для сбора мусора. Функция revoke также отделяет target и handler от proxy, поэтому если на target нет ссылок, то он тоже становится доступным для сбора мусора (даже если прокси ещё существует), поскольку больше нет явного способа взаимодействия с целевым объектом.

Предоставление пользователям возможность взаимодействовать с объектом через подлежащий отзыву прокси позволяет контролировать время жизни объекта доступного пользователю. Вы можете сделать объект пригодным для сбора мусора, даже если пользователь все ещё хранит ссылку на его прокси.

Примеры Использование Proxy.revocable()
const revocable = Proxy.revocable(
  {},
  {
    get(target, name) {
      return `[[${name}]]`;
    },
  },
);
const proxy = revocable.proxy;
console.log(proxy.foo); // "[[foo]]"

revocable.revoke();

console.log(proxy.foo); // возникает исключение TypeError
proxy.foo = 1; // снова TypeError
delete proxy.foo; // всё ещё TypeError
typeof proxy; // "object", typeof не вызывает никаких proxy-перехватчиков событий
Спецификации Совместимость с браузерами Смотрите также

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4