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.
Dále čtěte…
- Rozšířená dokumentace pro SproutCore 23. 5. 2012 15:04
- Flotr2 - javascriptová knihovna na grafy 17. 5. 2012 9:16
- Videa z JSConf 2012 zveřejněna 15. 5. 2012 10:40
- *JS aneb JavaScript ve stylu céčka 14. 5. 2012 12:00
- Illuminated.js - knihovna pro renderování v canvasu 11. 5. 2012 13:00
RE: Jak obejít zrádnou kontrolu typů v JavaScriptu
celé vláknoRE: Jak obejít zrádnou kontrolu typů v JavaScriptu
celé vláknoodkazovany priklad
celé vláknoRe: odkazovany priklad
celé vláknoVýstup ve formátu [object XXX] je standardizovaný ve 3. edici specifikace ECMA-262:
15.2.4.2 Object.prototype.toString ( )
When the
toStringmethod is called, the following steps are taken:
- Get the [[Class]] property of this object.
- Compute a string value by concatenating the three strings
"[object ", Result(1), and"]".- 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.