Proxy y Reflect en JavaScript
Interceptar el acceso a propiedades: así se construyen los observables.
function withDefaults(target, fallback) {
return new Proxy(target, {
get(object, key, receiver) {
return key in object ? Reflect.get(object, key, receiver) : fallback;
},
has() {
return true;
},
});
}
const settings = withDefaults({ theme: "dracula" }, "unset");
console.log(settings.theme, settings.editor, "anything" in settings);
const log = [];
const watched = new Proxy({}, {
set(object, key, value) {
log.push(`${String(key)}=${value}`);
return Reflect.set(object, key, value);
},
});
watched.tpm = 104;
watched.stars = 3;
console.log(log, watched.tpm);
Cómo funciona
- Un handler implementa las trampas que te interesan.
Reflectejecuta el comportamiento por defecto dentro de una trampa.- Úsalo con moderación: es invisible en el sitio de llamada.
Palabras clave y builtins usados aquí
ProxyReflectStringconstfunctionreturn
El intento, en números
- Líneas
- 24
- Caracteres a escribir
- 561
- Tokens
- 171
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 93 segundos.
Paso 1 de 4 en Objetos por dentro; paso 12 de 16 en Funciones y patrones.