Обмен технологиями

Прокси в es6 реализует режим наблюдателя

2024-07-08

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Введение в прокси

Прокси в ES6 — это специальный объект, используемый для создания прокси-объектов. Это позволяет нам определять собственное поведение, например перехват и изменение действий объекта по умолчанию. Прокси можно использовать для перехвата различных операций над объектами, включая доступ к свойствам, присваивание, вызовы функций и т. д.

Функция прокси — установить уровень перехвата перед целевым объектом, который может перехватывать и настраивать различные операции над целевым объектом. Используя прокси, мы можем реализовать такие функции, как контроль доступа, проверка данных и перехват атрибутов целевых объектов.

Прокси-объект оборачивает целевой объект прокси-объектом и предоставляет набор функций-перехватчиков (также называемых «ловушками»), которые могут работать с прокси-объектом. Когда мы работаем с прокси-объектом, мы фактически вызываем эти функции-перехватчики и обрабатываем их соответствующим образом по мере необходимости.

Введение в операции с атрибутами прокси

  • get(target, propKey, получатель): перехватить чтение свойств объекта.
  • set(target, propKey, value, получатель): перехватывает настройку свойств объекта и возвращает логическое значение.
  • has(target, propKey): перехватывает операцию propKey в прокси-сервере и возвращает логическое значение.
  • deleteProperty(target, propKey): перехватывает операцию удаления прокси[propKey] и возвращает логическое значение.
  • ownKeys(цель): Перехватить Object.getOwnPropertyNames(proxy), Object.getOwnPropertySymbols(proxy), Object.keys(proxy), цикл for...in и вернуть массив. Этот метод возвращает имена свойств всех собственных свойств целевого объекта, в то время как возвращаемый результат Object.keys() включает только собственные проходимые свойства целевого объекта.
  • getOwnPropertyDescriptor(target, propKey): перехватывает Object.getOwnPropertyDescriptor(proxy, propKey) и возвращает объект описания свойства.
  • defineProperty(target, propKey, propDesc): перехватывает Object.defineProperty(proxy, propKey, propDesc), Object.defineProperties(proxy, propDescs) и возвращает логическое значение.
  • PreventExtensions(target): перехватывает Object.preventExtensions(proxy) и возвращает логическое значение.
  • getPrototypeOf(target): перехватить Object.getPrototypeOf(proxy) и вернуть объект.
  • isExtensible(target): перехватывает Object.isExtensible(proxy) и возвращает логическое значение.
  • setPrototypeOf(target, proto): перехватывает Object.setPrototypeOf(proxy, proto) и возвращает логическое значение. Если целевой объект является функцией, есть две дополнительные операции, которые можно перехватить.
  • apply(target, object, args): перехватить работу экземпляра Proxy как вызов функции, например proxy(...args), proxy.call(object, ...args), proxy.apply(...).
  • construct(target, args): перехватить работу экземпляра Proxy как вызов конструктора, например, new proxy(...args).

использоватьProxyРеализуйте шаблон наблюдателя