JavaScript obsahuje řadu integrovaných objektů, které rozšiřují flexibilitu jazyka. Těmito objekty jsou Date, Math, String, Array a Object. Některé z těchto objektů jsou „vypůjčené“ ze specifikace jazyka Java, ale implementace JavaScriptu z nich se liší. Pokud znáte prostředí Java, budete chtít pečlivě prozkoumat vestavěné typy objektů JavaScriptu, abyste předešli jakýmkoli nejasnostem.
Objektový model JavaScriptu je jednoduchý. Převážná část těchto objektů se zabývá obsahem okna - dokumenty, odkazy, formuláři atd. Kromě objektů s obsahem okna podporuje JavaScript malou hrstku „vestavěných“ objektů. Tyto integrované objekty jsou k dispozici bez ohledu na obsah okna a fungují nezávisle na jakékoli stránce, kterou načetl váš prohlížeč.
Učení JavaScriptu
Tento článek je součástí archivu technického obsahu JavaWorld. O programování v JavaScriptu se můžete dozvědět mnoho článků v článku Řada JavaScriptMějte na paměti, že některé informace budou pravděpodobně zastaralé. Další informace o programování pomocí JavaScriptu najdete v částech „Používání JavaScriptu a formulářů“ a „Ladění programů JavaScript“.
Integrované objekty jsou Date, Math, String, Array a Object. Každá je použita jedinečným a ne zcela konzistentním způsobem. Novější verze JavaScriptu (jak je uvedeno v Netscape „Atlas“, aktuálně v beta verzi) navíc implementují několik těchto objektů odlišným způsobem než v Netscape 2.0. V tomto sloupci se budeme zabývat těmito vestavěnými objekty a tím, jak je používat. A všimneme si zvláštností, se kterými se setkáte při použití těchto objektů na stránky JavaScriptu.
Porozumění řetězcovému objektu
Ze všech objektů JavaScriptu je nejčastěji používán objekt String. V implementaci JavaScriptu 2.0 Netscape 2.0 se nové objekty řetězců vytvářejí implicitně pomocí přiřazení proměnné. Například,
var myString = "Toto je řetězec";
vytvoří řetězec se zadaným textem nazvaný myString.
V Netscape 2.0 neexistuje žádný skutečný objekt zvaný řetězec a pokus o vytvoření instance nového objektu String pomocí nového příkazu má za následek chybu, protože String (nebo řetězec) není definované klíčové slovo. Ve verzi Atlas Netscape je však String objektem bona fide a klíčové slovo String lze použít k vytvoření nových řetězců. Následující dva přístupy jsou povoleny v Atlasu, ale ne v Netscape 2.0.
var myString = new String (); myString = "Toto je řetězec";
a
var myString = nový řetězec ("Toto je řetězec");
Řetězcové objekty mají jednu vlastnost: délku. Vlastnost length vrací délku řetězce a používá syntaxi string.length,
kde řetězec je název proměnné řetězce. Oba následující displeje 16.
alert („Toto je řetězec“ .length)
a
var myString = "Toto je řetězec"; alert (myString.length);
I když může existovat pouze jedna vlastnost řetězce, JavaScript podporuje velké množství metod, které lze použít s řetězci. Tyto metody lze zhruba rozdělit do dvou širokých táborů: správa řetězců a textový formát.
Více od JavaWorld
Chcete více podnikových zpráv Java? Nechte si doručit do své doručené pošty zpravodaje JavaWorld Enterprise Java.
Mezi metody správy řetězců patří podřetězec
, indexOf
, lastIndexOf
, a toLowerCase
. Používají se k nějakému vrácení nebo změně obsahu řetězce. Například metoda podřetězce vrací zadanou část řetězce. Metoda indexOf určuje umístění znaku nebo skupiny znaků v řetězci. A metoda toLowerCase převádí řetězec na malá písmena. (Jak si dokážete představit, existuje také toUpperCase
metoda.)
Metody formátování textu se používají k formátování textu v dokumentu nějakým zvláštním způsobem a jsou poskytovány jako alternativy k používání značek HTML pro stejný účel. Mezi tyto metody patří velká, malá, sup, sub, kotva, odkaz a blikání.
Řetězcové metody lze použít přímo na řetězce nebo na proměnné, které obsahují řetězce. Metody vždy používají otevřené a uzavřené závorky, i když metoda nepoužívá parametry. Chcete-li například převést text na velká písmena, použijte jednu z následujících možností:
var tempVar = "tento text je nyní velká písmena" .toUpperCase ();
nebo
var myString = "tento text je nyní psán velkými písmeny"; var tempVar = myString.toUpperCase ();
V Netscape 2.0 existuje pouze jeden objekt String a jsou z něj vytvořeny všechny řetězce. Naopak řetězce jsou prvotřídní objekty v Atlasu a každý nový řetězec je považován za samostatný objekt. Chování řetězců v jednom objektu v Netscape 2.0 může způsobit některé jemné vedlejší účinky. Vezměte následující krátký segment skriptu. Jsou vytvořeny dva řetězce: řetězec1
a řetězec2
. Řetězec1 je přiřazena nová vlastnost (zvaná extra). Výstražná zpráva přesto ukazuje, že vlastnost nyní také patří do řetězce2.
string1 = "toto je řetězec 1" string2 = "toto je řetězec 2" string1.extra = upozornění "nová vlastnost" (string2.extra)
Technicky vzato jsou řetězce v JavaScriptu „neměnné“. To znamená, že obsah řetězce je statický a nelze jej změnit. V Netscape 2.0 je JavaScript schopen upravit řetězec pouze vytvořením nového umístění v paměti. Z tohoto důvodu je skript, který mnohokrát upravuje řetězec, náchylný k chybám paměti. Při každé změně řetězce vytvoří JavaScript nové umístění v paměti pro novou verzi. Nové řetězce jsou vytvořeny před tím, než dojde ke sběru odpadu, aby se zničil starý řetězec. JavaScript nakonec použije veškerou dostupnou paměť a dojde k chybě „nedostatek paměti“.
Klasický příklad tohoto problému lze vidět v populárním JavaScriptu „posuvníky zpráv“, kde se zpráva posouvá ve stavovém řádku nebo v textovém poli. Pro každý průchod scroller předefinuje proměnnou řetězce, která se zobrazí. Paměť je nakonec vyčerpána, protože JavaScript vytváří při každém průchodu nové instance řetězce. Například následující skript nakonec (dříve na některých platformách, například Windows 3.1) způsobí chybu „nedostatek paměti“:
počet var = 0; var text = "Toto je test scrollovače JavaScriptu."; svitek(); function scroll () {var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count <text.length) count ++; else count = 0; setTimeout ("scroll ()", 333); // 333ms je minimální zpoždění pro Netscape 2.0}
Jednoduché přepsání se vyhne problémům s vytvářením nových bloků paměti. Odstraňte přiřazení proměnné myString a pomocí okna.status analyzujte text přímo na stavový řádek.
window.status = text.substring (count, text.length) + text.substring (0, Count)
(Zatímco se výše uvedený přístup vyhne problému s replikací řetězcových objektů JavaScriptu, stále dochází k únikům paměti z důvodu použití metoda setTimeout
. Během mnoha iterací - obvykle několik tisíc nebo více - setTimeout spotřebuje veškerou dostupnou paměť a nakonec JavaScript zobrazí zprávu „out of memory“.)
Pro vaši informaci, zde jsou metody a vlastnosti použité s řetězcovým objektem JavaScriptu:
Vlastnosti řetězce
délka | Délka řetězce |
Řetězcové metody
Kotva | Vytvoří pojmenovanou kotvu (hypertextový cíl) |
velký | Nastaví text na velký |
blikat | Nastaví blikání textu |
tučně | Nastaví text na tučné písmo |
charAt | Vrátí znak na určené pozici |
pevný | Nastaví text v písmu s pevnou výškou |
barva fontu | Nastaví barvu písma |
velikost písma | Nastavuje velikost písma |
indexOf | Vrátí první výskyt znaku x počínaje pozicí y |
kurzíva | Nastaví text na kurzívu |
lastIndexOf | Vrátí poslední výskyt znaku x počínaje pozicí y |
odkaz | Vytvoří hypertextový odkaz |
malý | Nastaví text na malý |
stávkovat | Nastaví škrtnutí textu |
sub | Nastaví text na dolní index |
podřetězec | Vrátí část řetězce |
sup | Nastaví text na horní index |
toLowerString | Převede řetězec na malá písmena |
toUpperString | Převede řetězec na velká písmena |
Používání JavaScriptu jako vědecké kalkulačky
Matematický objekt JavaScriptu poskytuje pokročilé aritmetické a trigonometrické funkce rozšiřující základní aritmetické operátory JavaScriptu (plus, mínus, násobení, dělení). Matematický objekt v JavaScriptu je vypůjčený z Javy. Ve skutečnosti implementace objektu Math v JavaScriptu úzce odpovídá třídě Math v Javě, kromě toho, že objekt Math JavaScriptu nabízí méně metod.
Vlastnosti matematického objektu JavaScriptu jsou považovány za konstanty. Ve skutečnosti jsou názvy vlastností ve všech velkých písmenech, podle obvyklé konvence psaní velkých písmen proměnných konstant. Tyto vlastnosti vracejí často používané hodnoty, včetně pi a druhá odmocnina 2. Matematické metody se používají v matematických a trigonometrických výpočtech. Mezi užitečné metody matematických objektů patří ceil, floor, pow, exp (exponent), max, min, round a random. (Náhodné je však k dispozici pouze při použití platformy X Window.)
Matematický objekt je statický, takže pro jeho použití nemusíte vytvářet nový matematický objekt. Pro přístup k vlastnostem a metodě Math objektu stačí zadat Math objekt spolu s požadovanou metodou nebo vlastností. Například k vrácení hodnoty pi, používáš:
var pi = Math.PI;
Podobně pro použití matematické metody uvedete název metody spolu s parametry, které chcete použít. Například zaokrouhlit hodnotu pi, použili byste:
var pi = Math.PI; var pieAreRound = Math.round (pi); // zobrazí 3
Všimněte si, že musíte zadat Math objekt podle názvu pro každou Math metodu / vlastnost, kterou chcete použít. JavaScript nerozpozná klíčová slova PI a zaokrouhlí je úplně sám. Výjimka: můžete použít s
příkaz k přidružení názvů metod a vlastností k objektu Math. Tato technika je užitečným šetřičem prostoru, když musíte použít několik matematických vlastností a metod. Předchozí příklad lze zapsat jako
s (Math) {var pi = PI; var pieAreRound = kulatý (pi); upozornění (pieAreRound)}
Zde jsou vlastnosti a metody podporované matematickým objektem JavaScriptu.
Matematické vlastnosti
E | Eulerova konstanta |
LN2 | Přirozený logaritmus 2 |
LN10 | Přirozený logaritmus 10 |
LOG2E | Základní 2 logaritmus e |
LOG10E | Základní 10 logaritmus e |
PI | Číselný ekvivalent PI: 3,14 atd. |
SQRT1_2 | Druhá odmocnina jedné poloviny |
SQRT2 | Druhá odmocnina z 2 |
Matematické metody
břišní svaly | Vrátí absolutní hodnotu čísla |
acos | Vrátí kosinus kosinusu čísla |
jako v | Vrátí sinusový oblouk čísla |
opálení | Vrátí tečnou oblouku čísla |
strop | Vrátí nejmenší celé číslo větší nebo rovno číslu |
cos | Vrátí kosinus čísla |
exp | Vrátí e (Eulerova konstanta) k síle čísla |
podlaha | Vrátí největší celé číslo menší nebo rovno jeho argumentu |
log | Vrátí přirozený logaritmus (základ e) čísla |
max | Vrátí vyšší ze dvou hodnot |
min | Vrátí nižší ze dvou hodnot |
prášek | Vrátí hodnotu několikrát zadaného výkonu |
náhodný | Vrátí náhodné číslo (pouze platformy X) |
kolo | Vrátí číslo zaokrouhleno na nejbližší celou hodnotu |
hřích | Vrátí sinus čísla |
čtv | Vrátí druhou odmocninu čísla |
opálení | Vrátí tangens čísla |
Žádáme JavaScript o datum
Také si Java vypůjčuje objekt Date, který lze v JavaScriptu použít k určení aktuálního času a data. Populární JavaScriptová aplikace objektu Date zobrazuje digitální hodiny v textovém poli. Skript používá objekt Date k aktualizaci hodin jednou za sekundu. Objekt Date také použijete k provedení matematické metody data. Například váš skript může určit počet dní mezi dneškem a určitým budoucím datem. Můžete jej použít k zobrazení „odpočítávání“, jako je počet zbývajících dní do velkého prodeje vaší společnosti.
JavaScript zachází s objektem Date jako s třídou konstruktoru. Chcete-li použít Date, musíte vytvořit nový objekt Date; pak můžete použít různé metody Datum k získání a nastavení dat. (Objekt Date nemá žádné vlastnosti.) Pokud jste obeznámeni s třídou Date v Javě, najdete vlastnosti objektu JavaScript Date do značné míry stejné. Nejběžněji používané metody jsou dostat
metody, které získávají čas a datum hodnoty v objektu Date. Jedná se o tyto metody:
- getHours () - Vrátí hodinu
- getMinutes () - Vrátí minuty
- getSeconds () - Vrátí sekundy
- getYear () - Vrátí rok („96“ je 1996)
- getMonth () - Vrátí měsíc („0“ je leden)
- getDate () - Vrátí den v měsíci
- getDay () - Vrátí den v týdnu („0“ je neděle)
(Objekt Date v JavaScriptu také umožňuje nastavení času a data objektu Date, ale ty se používají jen zřídka.)
Konstrukce nového objektu Date může mít několik podob. Chcete-li vrátit objekt obsahující aktuální datum a čas, použijete objekt Date bez parametrů. V následujícím, datum_obj
je nový objekt obsahující hodnotu aktuálního data a času nastavenou systémovými hodinami počítače.
var date_obj = new Date ();
Alternativně můžete zadat dané datum a čas jako součást konstruktoru data. Každá z těchto metod je povolena - obě nastavily nový objekt data na 1. ledna 1997 o půlnoci místního času.
var date_obj = nové datum ("1. ledna 1997 00:00:00")
a
var date_obj = nové datum (97, 0, 1, 12, 0, 0)
Chcete-li použít metodu Date, připojte metodu k datovému objektu, který jste dříve vytvořili. Chcete-li například vrátit aktuální rok, použijte:
var now = new Date (); var yearNow = now.getYear ();
Zde jsou uvedeny metody podporované objektem Date v jazyce JavaScript.