Autor | Zpráva | ||
---|---|---|---|
Olin Profil * |
#1 · Zasláno: 31. 5. 2006, 20:32:56
Dobrý den, nevíte prosím někdo jaký je rozdíl v těchto několika deklaracích?
retezec = "ahoj"; var retezec = "ahoj"; retezec = new String("ahoj"); retezec = String("ahoj"); var retezec = String("ahoj"); var retezec = new String("ahoj"); Předpokládáme, že je to první výskyt proměnné retezec. |
||
Oswald Profil |
#2 · Zasláno: 31. 5. 2006, 23:58:50
var retezec = "ahoj";
Vytváří primitivní řetězcovou hodnotu - nevytváří se objekt String: typeof 'test' == 'string' Přesto jsou k dispozici všechny metody a vlastnost length z třídy String (i vlastní přidané do String.prototype): alert('test'.toUpperCase()); V případě potřeby (např. při volání nějaké metody) řetězcová hodnota (interně) dočasně převede na objekt String. var retezec = String("ahoj"); Taky se vytváří pouze řetězcová hodnota, výsledek volání je návratová hodnota metody toString() předaného argumentu, takže dobře poslouží k získání řetězce např. z integru. Jinými slovy: promenna.toString() == String(promenna) var retezec = new String("ahoj"); Stejné jako u předchozího, ale explicitně vytváří objekt String jako takový. var x = 'a'; Oproti primitivní hodnotě má několik drobných odlišností a je lepší se mu vyhnout, protože se může chovat trochu nečekaně (tenhle příklad je z Core JavaScript Guide 1.5): s1 = "2 + 2" //creates a string literal value Podobné je to u čísel (var n = 1 / var n = new Number(1) / var n = Number(1)). |
||
Časová prodleva: 19 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0