No JavaScript tradicional, getters e setters são definidos para nomes de propriedades específicas. No entanto, é possível criar getters e setters dinâmicos mais flexíveis usando proxies introduzidos no ES2015.
Getters e setters dinâmicos permitem acesso e modificação de propriedades sem definições explícitas. Veja como implementá-los usando proxies:
"use strict";
if (typeof Proxy == "undefined") {
throw new Error("This browser doesn't support Proxy");
}
let original = {
example: "value",
};
let proxy = new Proxy(original, {
get(target, name, receiver) {
if (Reflect.has(target, name)) {
let rv = Reflect.get(target, name, receiver);
// Modify the value here before returning
return rv;
}
// Define default behavior for unknown properties
return "missing";
}
});
Com o proxy acima instalado, o acesso e a modificação da propriedade podem ser realizados dinamicamente:
console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"
Proxies são suportados em navegadores modernos, como Chrome, Firefox e Safari. No entanto, para navegadores mais antigos que não suportam proxies, uma solução alternativa pode ser implementada usando a sintaxe getter/setter dinâmica sem proxies.
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