zpět k lekci

Chyba při načítání neexistující vlastnosti

Pokus o načtení neexistující vlastnosti zpravidla vrátí undefined.

Vytvořte proxy, která při pokusu o načtení neexistující vlastnosti místo toho vyvolá chybu.

To nám může pomoci dříve detekovat programátorské chyby.

Napište funkci obal(cíl), která vezme objekt cíl a vrátí proxy, která přidá tento funkcionální aspekt.

Mělo by to fungovat takto:

let uživatel = {
  jméno: "Jan"
};

function obal(cíl) {
  return new Proxy(cíl, {
      /* váš kód */
  });
}

uživatel = obal(uživatel);

alert(uživatel.jméno); // Jan
alert(uživatel.věk); // ReferenceError: Vlastnost neexistuje: "věk"
let uživatel = {
  jméno: "Jan"
};

function obal(cíl) {
  return new Proxy(cíl, {
    get(cíl, vlastnost, příjemce) {
      if (vlastnost in cíl) {
        return Reflect.get(cíl, vlastnost, příjemce);
      } else {
        throw new ReferenceError(`Vlastnost neexistuje: "${vlastnost}"`)
      }
    }
  });
}

uživatel = obal(uživatel);

alert(uživatel.jméno); // Jan
alert(uživatel.věk); // ReferenceError: Vlastnost neexistuje: "věk"