Programování

Pomocí vestavěných objektů JavaScriptu

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élkaDélka řetězce

Řetězcové metody

KotvaVytvoří pojmenovanou kotvu (hypertextový cíl)
velkýNastaví text na velký
blikatNastaví blikání textu
tučněNastaví text na tučné písmo
charAtVrátí znak na určené pozici
pevnýNastaví text v písmu s pevnou výškou
barva fontuNastaví barvu písma
velikost písmaNastavuje velikost písma
indexOfVrátí první výskyt znaku x počínaje pozicí y
kurzívaNastaví text na kurzívu
lastIndexOfVrátí poslední výskyt znaku x počínaje pozicí y
odkazVytvoří hypertextový odkaz
malýNastaví text na malý
stávkovatNastaví škrtnutí textu
subNastaví text na dolní index
podřetězecVrátí část řetězce
supNastaví text na horní index
toLowerStringPřevede řetězec na malá písmena
toUpperStringPř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

EEulerova konstanta
LN2Přirozený logaritmus 2
LN10Přirozený logaritmus 10
LOG2EZákladní 2 logaritmus e
LOG10EZákladní 10 logaritmus e
PIČíselný ekvivalent PI: 3,14 atd.
SQRT1_2Druhá odmocnina jedné poloviny
SQRT2Druhá odmocnina z 2

Matematické metody

břišní svalyVrátí absolutní hodnotu čísla
acosVrátí kosinus kosinusu čísla
jako vVrátí sinusový oblouk čísla
opáleníVrátí tečnou oblouku čísla
stropVrátí nejmenší celé číslo větší nebo rovno číslu
cosVrátí kosinus čísla
expVrátí e (Eulerova konstanta) k síle čísla
podlahaVrátí největší celé číslo menší nebo rovno jeho argumentu
logVrátí přirozený logaritmus (základ e) čísla
maxVrátí vyšší ze dvou hodnot
minVrátí nižší ze dvou hodnot
prášekVrátí hodnotu několikrát zadaného výkonu
náhodnýVrátí náhodné číslo (pouze platformy X)
koloVrátí číslo zaokrouhleno na nejbližší celou hodnotu
hříchVrátí sinus čísla
čtvVrá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.

$config[zx-auto] not found$config[zx-overlay] not found