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
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.

Odysseus: PewDiePie vydal open-source AI workspace, který běží na vašem vlastním hardwaru

AI
Komentáře: 0
Felix Kjellberg, youtuber se 110 miliony odběratelů, strávil rok učením se programovat a fine-tuningem vlastních AI modelů. Výsledkem je Odysseus – bezplatný, open-source workspace pro práci s umělou inteligencí, který neposílá žádná data do cloudu. Projekt má týden, přes 61 000 hvězdiček na GitHubu a znovu otevírá otázku, komu vlastně patří váš digitální kontext.

Když Git už nestačí: jak izolovat databázový stav pro pokusy AI agentů

Gitová větev vývojářům oddělí kód, ale databáze často zůstává společná. U AI agentů je to slabé místo: rychle spouštějí migrace, mění data a zkoušejí víc cest najednou. Databázová větev jim dá vlastní pracovní prostor, jenže tím práce nekončí. Ještě je potřeba řešit citlivá data, oprávnění, životnost větve i zbytek stavu aplikace.

GitHub vyhrál pohodlím. Stejné pohodlí dnes ztěžuje odchod

GitHub kdysi působil jako přesný opak SourceForge: rychlý, přehledný a přirozený. Dnešní projekt na něm ale často nemá jen kód. Má tam issues, pull requesty, CI, balíčky, bezpečnostní pravidla i AI agenty. Lock-in nevzniká tím, že by nešel odnést Git repozitář, ale tím, že se běžný provoz týmu postupně přesune do jedné platformy.