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; } }