Jak nám pomáhají reflexe

AndreaAndrea

Reflexe (neboli reflection) v programování není zdaleka nový koncept. Reflexe odkazuje na schopnost programu se "sebe-prozkoumat" a modifikovat své vlastní struktury dynamicky, často na základě vstupu nebo podmínek, které nebyly známy při kompilaci.

Jazyky s podporou reflexe se objevily už v 60. letech. Jedním z prvních jazykl byl Lisp, který podporoval reflexivní operace a ještě dnes je považován za jeden z nejflexibilnějších jazyků, co se týče manipulace s kódem za běhu programu.

Dnes se s reflexí setkáme v některých oblastech, například

  • v ORM (Object-Relational Mapping) frameworkách,
  • debugování, protože vám umožní inspektovat, modifikovat a monitorovat objekty za běhu.
  • testování a nástrojích pro vývoj. Nakonec, umožňuje psát kód, který je jednoduše konfigurovatelný a rozšiřitelný. To je obzvlášť důležité v moderním vývoji, kde se často používají plug-and-play architektury, moduly a rozšíření.

Reflexe v Javascriptu

JavaScript nám tedy dovoluje pomocí reflexe zkoumat a měnit vlastnosti a metody objektu. Dokonce můžeme dynamicky vytvářet nové. Reflexemi u funkcí se zabýváme v samostatném článku

Získání informací o objektu

Časté použití reflexe je v situaci, kdy se snažíme zjistit vlastnosti objektu

Změna struktury objektu za běhu

Toto může zahrnovat přidání nových metod nebo vlastností do existujícího objektu.

  • Získává prototyp objektu Object.setPrototypeOf(obj, prototype)

  • Object.defineProperties(obj, props) definuje nové nebo upravuje existující vlastnosti objektu

Reflexe je mocný nástroj, ale s tím přichází i odpovědnost. Je důležité používat reflexi uváženě, protože nadměrné nebo neopatrné použití může vést k kódu, který je těžký na údržbu, méně výkonný a těžko čitelný.