Přejít k navigační liště

Zdroják » Zprávičky » Jak obejít zrádnou kontrolu typů v JavaScriptu

Jak obejít zrádnou kontrolu typů v JavaScriptu

Kdo programuje v JavaScriptu ví, že kontrola datových typů v něm může být zrádná. Napřiklad pro vytvořené pole platí instance of Array, ale již to neplatí pro pole, které vám bylo předáno z jiného okna nebo rámce (čas od času na tuto „zradu“ vývojáři narazí). Univerzální způsob pro kontrolu typů v JavaScrptu neexistuje a vývojáří se proto snaží nalézat vlastní řešení. V článku instanceof considered harmful (or how to write a robust isArray) najdete možné řešení pro detekci pole.

Komentáře

Odebírat
Upozornit na
guest
4 Komentářů
Nejstarší
Nejnovější Nejvíce hlasů
Mazarik

Myslim, ze ti, co nepouzivaju framework, maju uz davno napisanu funkciu, ktora to grepuje z prototype.toString.

Michal Aichinger

Nezdá se mi, že odkazovaný příklad je úplná výhra, neboť to spoléha na nestandardizovaný výstup [object Array], co když to někdo z výrobců změní?

David Majda

Výstup ve formátu [object XXX] je standardizovaný ve 3. edici specifikace ECMA-262:

15.2.4.2 Object.prototype.toString ( )

When the toString method is called, the following steps are taken:

  1. Get the [[Class]] property of this object.
  2. Compute a string value by concatenating the three strings "[object ", Result(1), and "]".
  3. Return Result(2).

Hodnota vlastnosti [[Class]] zmíněné v 1. kroku je zapsána interpretem, nelze ji nijak změnit a konkrétně u pole bude vždy "Array" (viz 15.4.2.2).

I kdyby tento formát ve specifikaci standardizován nebyl, nikdo z výrobců prohlížečů si ho kvůli kompatibilitě nedovolí porušit.

Troufnu si tvrdit, že technika detekce polí přes Object.prototype.toString je spolehlivá. Rozhodně spolehlivější, než všechny ostatní, které znám.

Začal jako projekt studentů Matfyzu. Český BIRD dnes pomáhá řídit provoz na největších internetových uzlech

Internet drží pohromadě i díky místům, kde se propojují sítě poskytovatelů připojení, cloudů nebo videoslužeb. S předáváním informací o tom, kudy jsou jednotlivé sítě dostupné, jim ve Frankfurtu, Londýně i Amsterdamu pomáhá český BIRD. Začal jako studentský projekt, po první verzi z roku 2000 léta spíš dřímal a soustavný vývoj obnovil až CZ.NIC. Ve své úloze uspěl tak výrazně, že největší uzly nakonec začaly platit vývoj konkurenčního softwaru, aby nebyly závislé jen na něm.

WebSocket: Jak dostat webovou aplikaci do reálného času

Chat, živé notifikace, společná úprava dokumentu nebo průběžně aktualizované kurzy. Uživatelé dnes čekají, že se webová aplikace změní ve chvíli, kdy se změní data, a ne až po stisknutí klávesy F5. Protokol WebSocket je nejrozšířenější způsob, jak mezi prohlížečem a serverem vytvořit trvalý obousměrný kanál. V článku se podíváme, jak funguje pod kapotou, jak ho použít v prohlížeči i na serveru a na co si dát pozor při nasazení do produkce.

Zahoďte knihovny: dropdowny, tooltipy a přechody stránek jen s HTML a CSS

Rozbalovací menu, tooltip, modální okno a plynulý přechod mezi stránkami. Ještě nedávno čtyři důvody, proč do projektu přidat několik knihoven a desítky kilobajtů JavaScriptu. V roce 2026 už to všechno zvládne prohlížeč sám. Ukážeme si, jak na to s Popover API, CSS anchor positioningem a View Transitions, a také kde mají své limity.