Un controlador es un objeto cuyas propiedades son funciones que definen el comportamiento del proxy cuando se realiza una operación en él. Un controlador 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 objeto controlador, puede personalizar aspectos específicos del comportamiento del proxy. Por ejemplo, al definir get() puede proporcionar una versión personalizada del descriptor de acceso a la propiedad del objetivo.
Sintaxis:
new Proxy(target, handler)
proxy constructor() : se usa para crear un objeto proxy que toma dos parámetros.
Parámetros:
- target: objeto de destino para envolver con Proxy. Puede ser cualquier tipo de objeto, incluida una array nativa, una función o incluso otro proxy.
- controlador: un objeto cuyas propiedades son funciones que definen el comportamiento del proxy cuando se realiza una operación en él.
Lista de métodos de controlador: esta sección enumera todos los métodos de controlador que puede definir. Los métodos de controlador a veces se denominan trampas, 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 nuevo operador.
- handler.defineProperty() : Una trampa para Object.defineProperty.
- handler.deleteProperty() : una trampa para el operador de eliminación.
- 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.getOwnPropertyNames y Object.getOwnPropertySymbols.
- handler.preventExtensions() : Una trampa para Object.preventExtensions.
- handler.set() : Una trampa para establecer valores de propiedad.
- handler.setPrototypeOf() : Una trampa para Object.setPrototypeOf.
Ejemplo: En este ejemplo, el objetivo tiene dos propiedades, string y número. Definimos un controlador que devuelve un valor diferente para num y permite cualquier otro acceso al objetivo.
Javascript
<script> const target = { string: "GeekForGeeks", num: 123 }; const handler = { get: function (target, prop, receiver) { if (prop === "string") { return "GeeksForGeeks"; } return Reflect.get(...arguments); } }; const obj = new Proxy(target, handler); console.log(obj.string); // "GeeksForGeeks" console.log(obj.num); // "123" </script>
Producción:
GeeksForGeeks 123
Publicación traducida automáticamente
Artículo escrito por devendrasalunke y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA