JavaScript obsahuje množstvo zabudovaných objektov, ktoré rozširujú flexibilitu jazyka. Ide o objekty Date, Math, String, Array a Object. Niektoré z týchto objektov sú „vypožičané“ zo špecifikácie jazyka Java, ale implementácia JavaScriptu je iná. Ak ovládate jazyk Java, mali by ste starostlivo preskúmať typy objektov zabudovaných v JavaScripte, aby ste predišli akejkoľvek zámene.
Objektový model JavaScriptu je jednoduchý. Väčšina týchto objektov sa zaoberá obsahom okna - dokumentmi, odkazmi, formulármi atď. Okrem objektov s obsahom okna podporuje JavaScript aj malú hŕstku „zabudovaných“ objektov. Tieto vstavané objekty sú k dispozícii bez ohľadu na obsah okna a fungujú nezávisle od akejkoľvek stránky, ktorú načítal váš prehliadač.
Učenie jazyka JavaScript
Tento článok je súčasťou archívu technického obsahu JavaWorld. Prečítajte si veľa informácií o programovaní v JavaScripte čítaním článkov v Séria JavaScript, nezabudnite, že niektoré informácie budú pravdepodobne zastarané. Ďalšie informácie o programovaní pomocou jazyka JavaScript nájdete v častiach „Používanie JavaScriptu a formulárov“ a „Ladenie programov JavaScript“.
Integrované objekty sú Date, Math, String, Array a Object. Každá je použitá jedinečným a nie celkom konzistentným spôsobom. Novšie verzie JavaScriptu (ako sa nachádzajú v Netscape „Atlas“, ktoré sú momentálne v beta verzii) navyše implementujú niektoré z týchto objektov odlišným spôsobom ako v Netscape 2.0. V tomto stĺpci sa budeme venovať týmto zabudovaným objektom a spôsobu ich použitia. A všimneme si zvláštnosti, s ktorými sa stretnete, keď tieto objekty použijete na svoje stránky JavaScript.
Pochopenie reťazcového objektu
Spomedzi všetkých objektov JavaScriptu je najbežnejšie používaný objekt String. V implementácii JavaScriptu 2.0 Netscape 2.0 sa nové objekty reťazcov vytvárajú implicitne pomocou priradenia premennej. Napríklad,
var myString = "Toto je reťazec";
vytvorí reťazec so zadaným textom, ktorý sa volá myString.
V prostredí Netscape 2.0 neexistuje žiadny skutočný objekt nazývaný reťazec a pokus o vytvorenie inštancie nového objektu String pomocou nového príkazu spôsobí chybu, pretože reťazec (alebo reťazec) nie je definované kľúčové slovo. Vo verzii Netscape s atlasom je však String objektom dobrej viery a na vytvorenie nových reťazcov je možné použiť kľúčové slovo String. Nasledujúce dva prístupy sú povolené v Atlase, ale nie v Netscape 2.0.
var myString = nový reťazec (); myString = "Toto je reťazec";
a
var myString = nový reťazec ("Toto je reťazec");
Reťazcové objekty majú jednu vlastnosť: dĺžku. Vlastnosť length vracia dĺžku reťazca a používa syntax string.length,
kde string je názov premennej reťazca. Oba nasledujúce displeje 16.
upozornenie („Toto je reťazec“. dĺžka)
a
var myString = "Toto je reťazec"; upozornenie (myString.length);
Aj keď môže existovať iba jedna vlastnosť reťazca, JavaScript podporuje veľké množstvo metód, ktoré je možné použiť s reťazcami. Tieto metódy možno zhruba rozdeliť do dvoch širokých táborov: správa reťazcov a textový formát.
Viac od JavaWorld
Chcete viac podnikových správ Java? Nechajte si doručiť bulletin JavaWorld Enterprise Java do svojej doručenej pošty.
Medzi metódy riadenia reťazcov patria podreťazec
, indexOf
, lastIndexOf
a toLowerCase
. Používajú sa na návrat alebo zmenu obsahu reťazca. Napríklad metóda podreťazca vráti zadanú časť reťazca. Metóda indexOf určuje umiestnenie znaku alebo skupiny znakov v reťazci. A metóda toLowerCase prevádza reťazec na malé písmená. (Ako si dokážete predstaviť, existuje aj toUpperCase
metóda.)
Na formátovanie textu v dokumente sa nejakým špeciálnym spôsobom používajú metódy textového formátu, ktoré sa poskytujú ako alternatíva k použitiu značiek HTML na rovnaký účel. Medzi tieto metódy patrí veľké, malé, sup, sub, ukotvenie, prepojenie a blikanie.
Metódy reťazcov je možné použiť priamo na reťazce alebo na premenné, ktoré obsahujú reťazce. Metódy vždy používajú otvorenú a uzavretú zátvorku, aj keď metóda nepoužíva parametre. Napríklad na prevedenie textu na veľké písmená použijete jednu z nasledujúcich možností:
var tempVar = "tento text je teraz písaný veľkými písmenami" .toUpperCase ();
alebo
var myString = "tento text je teraz písaný veľkými písmenami"; var tempVar = myString.toUpperCase ();
V Netscape 2.0 je iba jeden objekt String a sú z neho vytvorené všetky reťazce. Naopak, reťazce sú v Atlase prvotriednymi objektmi a s každým novým reťazcom sa zaobchádza ako so samostatným objektom. Chovanie reťazcov v jednom objekte v prostredí Netscape 2.0 môže spôsobiť jemné vedľajšie účinky. Vezmime si nasledujúci krátky segment skriptu. Vytvoria sa dva reťazce: reťazec1
a string2
. K vlastnosti string1 je priradená nová vlastnosť (nazývaná extra). Výstražná správa zatiaľ ukazuje, že vlastnosť teraz tiež patrí do reťazca2.
string1 = "toto je reťazec 1" string2 = "toto je reťazec 2" string1.extra = upozornenie "nová vlastnosť" (string2.extra)
Technicky povedané, reťazce sú v jazyku JavaScript „nemenné“. To znamená, že obsah reťazca je statický a nemožno ho zmeniť. V prostredí Netscape 2.0 je JavaScript schopný upravovať reťazec iba tak, že preň vytvorí nové miesto v pamäti. Z tohto dôvodu je skript, ktorý mnohokrát upravuje reťazec, náchylný na chyby pamäte. Pri každej zmene reťazca vytvorí JavaScript pre novú verziu v pamäti nové umiestnenie. Nové reťazce sa vytvárajú skôr, ako sa uskutoční zber odpadu, aby sa starý reťazec zničil. JavaScript nakoniec použije všetku svoju dostupnú pamäť a dôjde k chybe „nedostatok pamäte“.
Klasický príklad tohto problému možno nájsť v populárnych JavaScriptoch „posúvače správ“, kde sa správa posúva v stavovom riadku alebo v textovom poli. Pri každom prechode posúvač predefinuje premennú reťazca, ktorá sa zobrazí. Pamäť sa nakoniec vyčerpá, pretože JavaScript vytvára pri každom prechode nové inštancie reťazca. Napríklad nasledujúci skript nakoniec (skôr na niektorých platformách, napríklad Windows 3.1) nakoniec spôsobí chybu „nedostatok pamäte“:
počet varov = 0; var text = "Toto je test scrollovača JavaScriptu."; scroll (); 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álne oneskorenie pre Netscape 2.0}
Jednoduché prepisovanie zabráni problémom s vytváraním nových blokov pamäte. Odstráňte priradenie premennej myString a analyzujte text priamo do stavového riadku pomocou súboru window.status.
window.status = text.substring (count, text.length) + text.substring (0, Count)
(Zatiaľ čo sa vyššie uvedený prístup vyhýba problémom s replikáciou reťazcových objektov JavaScriptu, stále dochádza k únikom pamäte z dôvodu použitia servera metóda setTimeout
. Počas mnohých iterácií - zvyčajne niekoľko tisíc a viac - setTimeout spotrebuje všetku dostupnú pamäť a nakoniec JavaScript zobrazí správu „out of memory“.)
Pre vašu informáciu, tu sú metódy a vlastnosti použité s objektom reťazca JavaScriptu:
Vlastnosti reťazca
dĺžka | Dĺžka šnúrky |
Metódy reťazcov
Kotva | Vytvorí pomenovanú kotvu (hypertextový cieľ) |
veľký | Nastaví text na veľký |
blikať | Nastaví blikanie textu |
tučne | Nastaví text na tučné písmo |
charAt | Vráti znak na určenej pozícii |
opravený | Nastaví text vo fonte s pevnou výškou |
farba písma | Nastavuje farbu písma |
veľkosť písma | Nastavuje veľkosť písma |
indexOf | Vráti prvý výskyt znaku x začínajúci od polohy y |
kurzíva | Nastaví text na kurzívu |
lastIndexOf | Vráti posledný výskyt znaku x začínajúci od polohy y |
odkaz | Vytvorí hypertextový odkaz |
malý | Nastaví text na malý |
štrajk | Nastaví prečiarknutie textu |
podč | Nastaví text na dolný index |
podreťazec | Vráti časť reťazca |
súp | Nastaví text na horný index |
toLowerString | Skonvertuje reťazec na malé písmená |
toUpperString | Skonvertuje reťazec na veľké písmená |
Používanie JavaScriptu ako vedeckej kalkulačky
Matematický objekt JavaScriptu poskytuje pokročilé aritmetické a trigonometrické funkcie a rozširuje sa o základné aritmetické operátory JavaScriptu (plus, mínus, násobenie, delenie). Matematický objekt v JavaScripte je požičaný z Java. V skutočnosti je implementácia objektu Math v JavaScripte paralelná s triedou Math v Jave, až na to, že objekt Math JavaScriptu ponúka menej metód.
Vlastnosti matematického objektu JavaScriptu sa považujú za konštanty. V skutočnosti sú názvy vlastností veľkými písmenami, a to podľa obvyklej konvencie písania veľkých písmen premenných konštánt. Tieto vlastnosti vracajú často používané hodnoty vrátane pi a druhá odmocnina z 2. Matematické metódy sa používajú v matematických a trigonometrických výpočtoch. Medzi užitočné metódy matematických objektov patria ceil, floor, pow, exp (exponent), max, min, round a random. (Náhodné je však k dispozícii iba pri použití platformy X Window.)
Matematický objekt je statický, takže aby ste ho mohli používať, nemusíte vytvárať nový matematický objekt. Pre prístup k vlastnostiam a metóde matematického objektu stačí zadať matematický objekt spolu s požadovanou metódou alebo vlastnosťou. Napríklad na vrátenie hodnoty pi, používaš:
var pi = Math.PI;
Podobne pri použití matematickej metódy uvediete jej názov a parametre, ktoré chcete použiť. Napríklad zaokrúhliť hodnotu pi, použili by ste:
var pi = Math.PI; var pieAreRound = Math.round (pi); // zobrazí 3
Upozorňujeme, že pre každú matematickú metódu / vlastnosť, ktorú chcete použiť, musíte určiť matematický objekt podľa názvu. JavaScript nerozpozná kľúčové slová PI a zaokrúhli ich úplne sám. Výnimka: môžete použiť s
príkaz na priradenie názvov metód a vlastností k matematickému objektu. Táto technika je praktickým šetričom priestoru, keď musíte použiť niekoľko matematických vlastností a metód. Predchádzajúci príklad je možné zapísať ako
s (matematikou) {var pi = PI; var pieAreRound = guľatý (pi); upozornenie (pieAreRound)}
Pre vašu informáciu, tu sú vlastnosti a metódy podporované matematickým objektom JavaScriptu.
Matematické vlastnosti
E | Eulerova konštanta |
LN2 | Prirodzený logaritmus 2 |
LN10 | Prirodzený logaritmus 10 |
LOG2E | Základný 2 logaritmus napr |
LOG10E | Základný 10 logaritmus napr |
PI | Číselný ekvivalent PI: 3,14 atď. |
SQRT1_2 | Druhá odmocnina z polovice |
SQRT2 | Druhá odmocnina z 2 |
Matematické metódy
abs | Vráti absolútnu hodnotu čísla |
acos | Vráti kosínusový kosínus čísla |
ako v | Vráti sínusový oblúk čísla |
opálenie | Vráti dotyčnicu oblúka čísla |
strop | Vráti najmenšie celé číslo väčšie alebo rovné číslu |
cos | Vráti kosínus čísla |
exp | Vráti e (Eulerova konštanta) k sile čísla |
poschodie | Vráti najväčšie celé číslo menšie alebo rovné jeho argumentu |
log | Vráti prirodzený logaritmus (základ e) čísla |
max | Vráti vyššiu z dvoch hodnôt |
min | Vráti nižšiu z dvoch hodnôt |
pow | Vráti hodnotu niekoľkonásobku určeného výkonu |
náhodný | Vráti náhodné číslo (iba platformy X) |
okrúhly | Vráti číslo zaokrúhlené na najbližšiu celú hodnotu |
hriech | Vráti sínus čísla |
štvorcový | Vráti druhú odmocninu čísla |
opálenie | Vráti dotyčnicu čísla |
Žiadam dátum o JavaScript
Java si tiež požičiava objekt Date, ktorý je možné v JavaScripte použiť na určenie aktuálneho času a dátumu. Populárna JavaScriptová aplikácia objektu Date zobrazuje digitálne hodiny v textovom poli. Skript používa objekt Date na aktualizáciu hodín raz za sekundu. Na vykonanie matematiky dátumu tiež používate objekt Date. Napríklad váš skript môže určiť počet dní medzi dneškom a určitým budúcim dátumom. Môžete to použiť na zobrazenie „odpočítavania“, ako je napríklad počet dní zostávajúcich do veľkého predaja vašej spoločnosti.
JavaScript zaobchádza s objektom Date ako s triedou konštruktorov. Ak chcete použiť Dátum, musíte vytvoriť nový objekt Dátum; potom môžete použiť rôzne metódy dátumu na získanie a nastavenie dátumov. (Objekt Date nemá žiadne vlastnosti.) Ak ste oboznámení s triedou Date v Jave, vlastnosti objektu JavaScript Date sú väčšinou rovnaké. Najbežnejšie používané metódy sú dostať
metódy, ktoré získavajú čas a dátum hodnoty v objekte Date. Ide o tieto metódy:
- getHours () - Vráti hodinu
- getMinutes () - Vráti minúty
- getSeconds () - Vráti sekundy
- getYear () - Vráti rok („96“ je 1996)
- getMonth () - Vráti mesiac („0“ je január)
- getDate () - Vráti deň v mesiaci
- getDay () - Vráti deň v týždni („0“ je nedeľa)
(Objekt Date v jazyku JavaScript tiež umožňuje nastavenie času a dátumu objektu Date, ale zriedka sa používajú.)
Vytvorenie nového objektu Date môže mať niekoľko podôb. Ak chcete vrátiť objekt obsahujúci aktuálny dátum a čas, použijete objekt Date bez parametrov. V nasledujúcom, date_obj
je nový objekt obsahujúci hodnotu aktuálneho dátumu a času nastavenú systémovými hodinami počítača.
var date_obj = nový Dátum ();
Alternatívne môžete zadať daný dátum a čas ako súčasť konštruktora dátumu. Je povolená ktorákoľvek z týchto metód - obidve nastavili nový objekt dátumu na 1. januára 1997 o polnoci miestneho času.
var date_obj = nový dátum ("1. január 1997 00:00:00")
a
var date_obj = nový dátum (97, 0, 1, 12, 0, 0)
Ak chcete použiť metódu Date, pridajte túto metódu k objektu dátumu, ktorý ste predtým vytvorili. Napríklad na vrátenie aktuálneho roku použite:
var now = new Date (); var yearNow = now.getYear ();
Pre vašu informáciu, tu sú metódy podporované objektom Date v jazyku JavaScript.