007. Proxies

En este capítulo vamos a ver un tema muy especial que tiene que ver con la programación orientada a objetos. Vamos a ver lo que se conoce como proxies.

Un proxie es un nuevo mecanismo que tiene Javascript que permite crear un objeto basado en un objeto literal inicial. Es muy similar a las clases, pero en lugar de tener una clase como un modelo a seguir, tenemos un objeto literal como un modelo a seguir.

El proxy va a recibir el objeto literal, va a generar una copia, y va a permitir que realicemos ciertas operaciones como pueden ser validación de propiedades, tipos de datos… dentro de la copia que se está creando del objeto original. Vamos a tener un medio de vinculación entre el objeto en el que nos basamos y la copia (o instancia) que hemos generado, y todo se va a administrar a través de un objeto especial que recibe el proxy, que se conoce como handler (manejador).

Veamos su sintaxis con un ejm.

Ejm

const persona = {
  nombre: "",
  apellido: "",
  edad: 0,
}

const manejador = {
  set(obj, prop, valor) {
    obj[prop] = valor;
  }
}

const fran = new Proxy(persona, manejador);

// Damos valores y creamos una nueva propiedad
fran.nombre = "Fran";
fran.apellido = "Paredes";
fran.edad = 51;
fran.twitter = "@franwebsite";

// Se genera una vinculación entre fran y persona
// Se crea el twitter en persona también
console.log(fran);
console.log(persona);

Vamos a crear una condición en el manejador (handler) para que no se puedan crear propiedades nuevas. Modificamos nuestro manejador

Ejm

constmanejador = {
  set(obj, prop, valor) {
    if(Object.keys(obj).indexOf(prop) === -1) {
      console.log(`No existe la propiedad "${prop}" en el objeto persona`);
    }
    obj[prop] = valor;
  }
}
Scroll al inicio