"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O JavaScript pode implementar getters e setters dinâmicos para propriedades imprevisíveis?

O JavaScript pode implementar getters e setters dinâmicos para propriedades imprevisíveis?

Publicado em 2024-11-08
Navegar:461

 Can JavaScript Implement Dynamic Getters and Setters for Unpredictable Properties?

O JavaScript pode implementar getters/setters dinâmicos?

Getters e setters dinâmicos permitem que objetos JavaScript lidem com acesso e modificação de propriedades além das propriedades predefinidas. Embora as técnicas anteriores de JavaScript empregassem getters e setters específicos para propriedades conhecidas, este artigo explora a possibilidade de implementar getters e setters abrangentes para quaisquer propriedades indefinidas.

Proxy ES2015: uma solução dinâmica

ES2015 introduziu proxies JavaScript, que permitem a criação de objetos que servem como intermediários para outros objetos. Esse recurso abre getters e setters 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"

Neste exemplo, o objeto proxy intercepta o acesso à propriedade do objeto original. Ao acessar uma propriedade string, o proxy a converte para maiúscula e a retorna; para propriedades desconhecidas, ele retorna "ausente" em vez de indefinido.

Esta implementação é compatível com vários navegadores se o navegador suportar ES2015 (ES6). Para navegadores mais antigos, considere usar polyfills ou técnicas alternativas. Os proxies fornecem uma solução flexível para getters e setters dinâmicos, permitindo manipulação eficiente de propriedades e introspecção de propriedades sem modificar o objeto original.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3