Explicar el método del controlador en ES6

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

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *