Compartilhamento de tecnologia

Proxy em es6 implementa modo observador

2024-07-08

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

Introdução ao proxy

Proxy no ES6 é um objeto especial usado para criar objetos proxy. Ele nos permite definir comportamentos personalizados, como interceptar e modificar as ações padrão de um objeto. O proxy pode ser usado para interceptar várias operações em objetos, incluindo acesso a propriedades, atribuição, chamadas de função, etc.

A função do Proxy é configurar uma camada de interceptação antes do objeto alvo, que pode interceptar e personalizar várias operações no objeto alvo. Ao usar o Proxy, podemos implementar funções como controle de acesso, verificação de dados e sequestro de atributos de objetos de destino.

O proxy envolve o objeto de destino com um objeto proxy e fornece um conjunto de funções de gancho (também chamadas de "armadilhas") que podem operar no objeto proxy. Quando operamos no objeto proxy, estamos na verdade chamando essas funções de gancho e processando-as conforme necessário.

Introdução às operações de atributos de proxy

  • get(target, propKey, receiver): Intercepta a leitura das propriedades do objeto
  • set(target, propKey, value, receiver): intercepta a configuração das propriedades do objeto e retorna um valor booleano.
  • has(target, propKey): intercepta a operação de propKey no proxy e retorna um valor booleano.
  • deleteProperty(target, propKey): intercepta a operação delete proxy[propKey] e retorna um valor booleano.
  • ownKeys(target): Intercepta Object.getOwnPropertyNames(proxy), Object.getOwnPropertySymbols(proxy), Object.keys(proxy), for...in loop e retorna um array. Este método retorna os nomes das propriedades de todas as propriedades do objeto de destino, enquanto o resultado de retorno de Object.keys() inclui apenas as propriedades percorríveis do próprio objeto de destino.
  • getOwnPropertyDescriptor(target, propKey): intercepta Object.getOwnPropertyDescriptor(proxy, propKey) e retorna o objeto de descrição da propriedade.
  • defineProperty(target, propKey, propDesc): intercepta Object.defineProperty(proxy, propKey, propDesc), Object.defineProperties(proxy, propDescs) e retorna um valor booleano.
  • preventExtensions(target): intercepta Object.preventExtensions(proxy) e retorna um valor booleano.
  • getPrototypeOf(target): Intercepta Object.getPrototypeOf(proxy) e retorna um objeto.
  • isExtensible(target): intercepta Object.isExtensible(proxy) e retorna um valor booleano.
  • setPrototypeOf(target, proto): intercepta Object.setPrototypeOf(proxy, proto) e retorna um valor booleano. Se o objeto de destino for uma função, existem duas operações adicionais que podem ser interceptadas.
  • apply(target, object, args): intercepta a operação da instância Proxy como uma chamada de função, como proxy(...args), proxy.call(object, ...args), proxy.apply(...).
  • construct(target, args): intercepta a operação da instância Proxy como uma chamada de construtor, como new proxy(...args).

usarProxyImplementar o padrão de observador