Objetos proxy de JavaScript

 

 

 

Objetos proxy de javascript 1

Al trabajar con objetos, podemos crear un objeto proxy que intercepta y cambia el comportamiento de un objeto existente.

Lo hacemos utilizando el objeto nativo Proxy , introducido en ES2015.

Supongamos que tenemos un carobjeto:

const car = { color: 'blue'}

Un ejemplo muy simple que podemos hacer es devolver una cadena ‘No encontrado’ cuando intentamos acceder a una propiedad que no existe.

Puede definir un proxy que se llamará cada vez que intente acceder a una propiedad de este objeto.

 

Para ello, crea otro objeto que tenga un get()método, que reciba el objeto de destino y la propiedad como parámetros:

const car = { color: 'blue'}const handler = { get(target, property) { return target[property] ?? 'Not found' }}

Ahora podemos inicializar nuestro objeto proxy llamando a new Proxy(), pasando el objeto original y nuestro controlador:

const proxyObject = new Proxy(car, handler)

Ahora intente acceder a una propiedad contenida en el carobjeto, pero haciendo referencia a ella desde proxyObject:

proxyObject.color //'blue'

Esto es como llamar car.color.

Pero cuando intentas acceder a una propiedad que no existe en car, como car.test, obtendrás undefined. Si usas el proxy, obtendrás la 'Not found'cadena, ya que eso es lo que le dijimos que hiciera.

proxyObject.test //'Not found'

No estamos limitados al get()método de un controlador de proxy. Ese fue solo el ejemplo más simple que pudimos escribir.

Tenemos otros métodos que podemos utilizar:

  • applyse llama cuando usamos apply()en el objeto
  • constructSe llama cuando accedemos al constructor del objeto.
  • deletePropertySe ejecuta cuando intentamos eliminar una propiedad.
  • definePropertySe llama cuando definimos una nueva propiedad en el objeto.
  • setse ejecuta cuando intentamos establecer una propiedad

y así sucesivamente. Básicamente, podemos crear una puerta protegida que controle todo lo que sucede en un objeto y proporcionar reglas y controles adicionales para implementar nuestra propia lógica. Viajes y turismo

Otros métodos (también llamados trampas ) que podemos utilizar son:

  • enumerate
  • getOwnPropertyDescriptor
  • getPrototypeOf
  • has
  • isExtensible
  • ownKeys
  • preventExtensions
  • setPrototypeOf

todo correspondiente a la respectiva funcionalidad.

Puedes leer más sobre cada uno de ellos en MDN .

Vamos a crear otro ejemplo con deleteProperty. Queremos evitar que se eliminen las propiedades de un objeto:

const car = { color: 'blue'}const handler = { deleteProperty(target, property) { return false }}const proxyObject = new Proxy(car, handler)

Si llamamos a delete proxyObject.color, obtendremos un TypeError:

TypeError: 'deleteProperty' on proxy: trap returned falsish for property 'color'

Por supuesto, siempre se puede eliminar la propiedad directamente en el carobjeto, pero si escribe su lógica de modo que ese objeto sea inaccesible y solo expone el proxy, esa es una forma de encapsular su lógica.

Tips para principiantes de JavaScript




Tal vez te puede interesar:

  1. Cómo generar un número aleatorio entre dos números en JavaScript
  2. Cómo esperar el evento DOM listo en JavaScript simple
  3. Cómo determinar si una fecha es hoy en JavaScript
  4. Cómo contar el número de propiedades en un objeto JavaScript

Objetos proxy de JavaScript

Al trabajar con objetos, podemos crear un objeto proxy que intercepta y cambia el comportamiento de un objeto existente.

programar

es

https://aprendeprogramando.es/static/images/programar-objetos-proxy-de-javascript-2387-0.jpg

2025-01-10

 

Objetos proxy de javascript 1
Objetos proxy de javascript 1

Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente

 

 

Update cookies preferences