typestar

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

  1. Un handler implementa las trampas que te interesan.
  2. Reflect ejecuta el comportamiento por defecto dentro de una trampa.
  3. Úsalo con moderación: es invisible en el sitio de llamada.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 4 en Objetos por dentro; paso 12 de 16 en Funciones y patrones.

← Anterior Siguiente →