Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

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.

Předchozí zprávička Následující zprávička        
Mazarik
Mazarik (neregistrovaný) ---.ais-servis.cz
13. 1. 2009 9:00 Nový

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

celé vlákno
Myslim, ze ti, co nepouzivaju framework, maju uz davno napisanu funkciu, ktora to grepuje z prototype.toString.
Martin Hassman aura:85
13. 1. 2009 9:17 Nový

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

celé vlákno
Mazariku, znám javascriptové vývojáře a ani trochu tomu nevěřím. (Pokud někteří z nich mají na zmíněný problém vlastní řešení, budiž jim chvála, ale jedná se o - téměř zanedbatelnou - hrstku.)
Michal Aichinger
Michal Aichinger (neregistrovaný) ---.seznam.cz
13. 1. 2009 16:27 Nový

odkazovany priklad

celé vlákno
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 aura:98
13. 1. 2009 17:10 Nový

Re: odkazovany priklad

celé vlákno

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.

Zasílat nově přidané příspěvky e-mailem        

Přehled názorů

RE: Jak obejít zrádnou kontrolu typů v JavaScriptu
Mazarik 13. 1. 2009 09:00
└ 
RE: Jak obejít zrádnou kontrolu typů v JavaScriptu
Martin Hassman 13. 1. 2009 09:17
odkazovany priklad
Michal Aichinger 13. 1. 2009 16:27
└ 
Re: odkazovany priklad
David Majda 13. 1. 2009 17:10