"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Puede JavaScript implementar captadores y definidores dinámicos para propiedades impredecibles?

¿Puede JavaScript implementar captadores y definidores dinámicos para propiedades impredecibles?

Publicado el 2024-11-08
Navegar:806

 Can JavaScript Implement Dynamic Getters and Setters for Unpredictable Properties?

¿Puede JavaScript implementar captadores/definidores dinámicos?

Los captadores y definidores dinámicos permiten que los objetos JavaScript manejen el acceso y la modificación de propiedades más allá de las propiedades predefinidas. Si bien las técnicas anteriores de JavaScript empleaban captadores y definidores específicos para propiedades conocidas, este artículo explora la posibilidad de implementar captadores y definidores generales para cualquier propiedad no definida.

ES2015 Proxy: una solución dinámica

ES2015 introdujo proxies JavaScript, que permiten la creación de objetos que sirven como intermediarios para otros objetos. Esta capacidad abre captadores y definidores dinámicos:

const original = {
    example: "value",
};
const proxy = new Proxy(original, {
    get(target, name, receiver) {
        if (Reflect.has(target, name)) {
            let rv = Reflect.get(target, name, receiver);
            if (typeof rv === "string") {
                rv = rv.toUpperCase();
            }
            return rv;
        }
        return "missing";
    },
});

console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"

En este ejemplo, el objeto proxy intercepta el acceso a la propiedad del objeto original. Al acceder a una propiedad de cadena, el proxy la convierte a mayúsculas y la devuelve; para propiedades desconocidas, devuelve "faltante" en lugar de indefinido.

Esta implementación es compatible con todos los navegadores si el navegador admite ES2015 (ES6). Para navegadores más antiguos, considere usar polyfills o técnicas alternativas. Los proxies proporcionan una solución flexible para captadores y definidores dinámicos, lo que permite un manejo eficiente de propiedades y una introspección de propiedades sin modificar el objeto original.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3