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ší Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
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.

GPUI Component: moderní Rust GUI komponenty pro cross-platform desktop aplikace

Různé
Komentáře: 0
GPUI Component je open-source Rust knihovna rozšiřující framework GPUI o více než 60 moderních, nativních a multiplatformních UI komponent. Staví na deklarativním přístupu, stateless renderování a jednoduchém API inspirovaném Reactem či Yew. Díky optimalizovanému výkonu, podpoře témat a flexibilním layoutům umožňuje rychlý vývoj desktopových aplikací, jako je například trading nástroj Longbridge Pro. Knihovna je licencována pod Apache 2.0 a dostupná na GitHubu.

Vitest 4.0 – nové vizuální testování, lepší debugging a stabilní Browser Mode

Nová verze Vitest 4.0 posouvá hranice testování webových aplikací. Přináší stabilní běh testů přímo v prohlížeči, podporu vizuálního regresního testování i chytřejší práci s lokátory a typováním. Vývojáři tak získávají robustnější, rychlejší a přehlednější nástroje pro zajištění kvality UI i logiky aplikací.