ES6: Proxies

La introducción de los proxies es otra de las novedades que presenta ES6. Los proxies son objetos que se colocan por encima de otro objeto, nos intercepta las operaciones que se hagan sobre él y nos permite modificar su comportamiento por defecto. Por ejemplo, podríamos interceptar cuando una propiedad del objeto es modificada y cambiar el comportamiento de esta operación. Aunque tenemos muchísimas más opciones según el interceptor que usemos en el proxy y la operación que hagamos.

En los proxies, hay tres términos que debemos de conocer:

  • target: objeto sobre el que se colocará el proxy.
  • handler: objeto que contiene las funciones que determinan el comportamiento del proxy.
  • traps: funciones que contiene el objeto handler que nos permiten interceptar las operaciones que hagamos sobre el objeto y modificar su comportamiento por defecto. El listado de traps a los que podemos acceder lo puedes ver en este enlace.

Vamos a ver un ejemplo sencillo de cómo funcionan los proxies:

Ejemplo en vivo del código anterior: https://repl.it/@vreaxe/ES6-Proxies

Nota: En el código de arriba podemos ver unos ejemplos de algunos traps, exactamente del get, set y deleteProperty. Si quieres indagar sobre el resto, porque hay bastantes más, puedes consultar este enlace.

Para explicar un poco el código, primero creamos un objeto target que será el objeto al cual le aplicaremos el proxy. Después, creamos el objeto handler con las funciones que nos permitirán modificar el comportamiento por defecto de las operaciones que hagamos sobre el objeto target.

En este objeto handler, tenemos una función get que intercepta cuando queremos obtener una propiedad del objeto target, una función set que nos intercepta cuando cambiamos el valor de una propiedad y una función deleteProperty que nos intercepta cuando estamos eliminando una propiedad. Yo, en este caso, he puesto en las funciones unos console.log() y una simple validación para que sirva como ejemplo, para ver que se puede modificar el comportamiento, pero realmente puedes ejecutar el código que desees dentro de estas funciones (traps).

Después, creamos el proxy (new Proxy) pasánsole como parámetros el target (objeto) y el handler. Y, para finalizar, hacemos ciertas operaciones para con el objeto para comprobar el funcionamiento de las funciones creadas en el handler.


Aloja tu proyecto en DigitalOcean: Obtén $200 de crédito gratis al registrarte a través de este enlace.

Si hay cualquier tipo de error en el post o te surge cualquier duda, no dudes en ponerlo en los comentarios o enviarme un correo desde la página de contacto.

? CONTACTAR

Deja una respuesta

  Acepto la política de privacidad