Get to know MDN better
Esta página ha sido traducida del inglés por la comunidad. Aprende más y únete a la comunidad de MDN Web Docs.
This feature is well established and works across many devices and browser versions. It’s been available across browsers since septiembre de 2016.
El objeto Proxy permite crear un intermediario para otro objeto, el cual puede interceptar y redefinir operaciones fundamentales para dicho objeto.
Un Proxy se crea con dos parámetros:
Por ejemplo, este código define un objeto simple que tiene solo dos propiedades, y un manipulador más simple aún que no tiene propiedades:
Ya que el manipulador está vacío, este proxy se comporta justo como el objeto original:
Para personalizar el intermediario, definimos funciones en el objeto manipulador:
Aquí hemos provisto una implementación del manipulador get(), el cual intercepta los intentos de acceder a las propiedades del objeto envuelto.
Las funciones manipuladoras son llamadas a menudo trampas, probablemente porque atrapan las llamadas al objeto envuelto. La trampa simple de arriba en handler2 redefine todos los accesores de propiedades:
Con la ayuda de la clase Reflect podemos darle a algunos accesores el comportamiento original y redefinir otros:
Crea un nuevo objeto Proxy.
Crea un objeto Proxy revocable.
En este ejemplo, el número 37 es devuelto como valor pordefecto cuando el nombre de propiedad no está en el objeto. Se realiza usando el manipulador get().
En este ejemplo se usa un objeto nativo de JavaScript para el cual el proxy reenviará todas las operaciones que se le apliquen.
Nótese que mientras que esto funciona para objetos JavaScript, no lo hace para objetos nativos del navegador como Elementos del DOM.
Con un Proxy, puedes puedes validar fácilmente el valor enviado para un objeto. Este ejemplo usa el manipulador set().
Una función intermediaria podría fácilmente extender un constructor con un nuevo constructor. Este ejemplo usa los manipuladores construct() y apply().
A veces querrás alternar algún atributo o clase de dos elementos distintos. En este ejemplo se explica cómo lo puedes hacer usando el manipulador set().
El objeto intermediario products evalúa el valor pasado y lo convierte en un array de ser necesario. El objeto también soporta una propiedad extra llamada latestBrowser tanto como getter y como setter.
Este proxy extiende un arreglo con ciertas funcionalidades utilitarias. Como se puede ver, puedes "definir" propiedades de manera flexible sin usar Object.defineProperties(). Este ejemplo se puede adaptar para encontrar una fila de una tabla por su celda. En dicho caso, el target sería table.rows.
Para crear un ejemplo con la lista completa de trampas, con motivos didácticos, intentaremos intervenir un objeto no-nativo que se ajusta particularmente a este tipo de operación: el objeto global docCookies creado por un simple marco de cookies.
| ECMAScript® 2027 Language Specification # sec-proxy-objects |
Enable JavaScript to view this browser compatibility table.
This page was last modified on 18 dic 2024 by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.