Esta página ha sido traducida del inglés por la comunidad.Aprende más y únete a la comunidad de MDN Web Docs.
Constructor Proxy()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since septiembre de 2016.
El constructorProxy() crea objetosProxy.
In this article
Sintaxis
new Proxy(target, handler)Parameters
Descripción
Utilice el constructorProxy() para crear un nuevo objetoProxy.Este constructor toma dos argumentos obligatorios:
targetes el objeto para el que desea crear el proxyhandleres el objeto que define el comportamiento personalizado del proxy.
Un manejador vacío creará un proxy que se comporta, en casi todos los aspectos, exactamente como el objetivo. Al definir cualquiera de un conjunto de funciones en el objetohandler, puede personalizar aspectos específicos del comportamiento del proxy. Por ejemplo, al definirget() puede proporcionar una versión personalizada delacceso a la propiedad del objetivo.
Funciones del manejador
Esta sección enumera todas las funciones de manejador que puede definir. Las funciones de manejador a veces se denominantrampas, porque atrapan las llamadas al objeto de destino subyacente.
handler.apply()Una trampa para una llamada de función.
handler.construct()Una trampa para el operador
new.handler.defineProperty()Una trampa para
Object.defineProperty.handler.deleteProperty()Una trampa para el operador
delete.handler.get()Una trampa para obtener valores de propiedad.
handler.getOwnPropertyDescriptor()Una trampa para
Object.getOwnPropertyDescriptor.handler.getPrototypeOf()Una trampa para
Object.getPrototypeOf.handler.has()Una trampa para el operador
in.handler.isExtensible()Una trampa para
Object.isExtensible.handler.ownKeys()Una trampa para
Object.getOwnPropertyNamesyObject.getOwnPropertySymbols.handler.preventExtensions()Una trampa para
Object.preventExtensions.handler.set()Una trampa para establecer valores de propiedad.
handler.setPrototypeOf()Una trampa para
Object.setPrototypeOf.
Ejemplos
>Accesores de propiedad proxy selectivamente
En este ejemplo, el objetivo tiene dos propiedades,notProxied yproxied. Definimos un controlador que devuelve un valor diferente paraproxied y permite cualquier otro acceso al objetivo.
const target = { notProxied: "Valor original", proxied: "Valor original",};const handler = { get(target, prop, receiver) { if (prop === "proxied") { return "Valor reemplazado"; } return Reflect.get(...arguments); },};const proxy = new Proxy(target, handler);console.log(proxy.notProxied); // "Valor original"console.log(proxy.proxied); // "Valor reemplazado"Especificaciones
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-proxy-constructor> |