JavaScript käyttää useita sisäänrakennettuja objekteja, jotka lisäävät kielen joustavuutta. Nämä objektit ovat Date, Math, String, Array ja Object. Useat näistä objekteista on "lainattu" Java-kielimäärityksistä, mutta JavaScripti toteuttaa ne eri tavalla. Jos olet perehtynyt Java-ohjelmaan, sinun kannattaa tutkia huolellisesti JavaScriptin sisäänrakennetut kohdetyypit sekaannusten välttämiseksi.
JavaScript-objektimalli on yksinkertainen. Suurin osa näistä objekteista käsittelee ikkunan sisältöä - asiakirjoja, linkkejä, lomakkeita ja niin edelleen. Ikkunasisältöobjektien lisäksi JavaScript tukee pientä kourallista "sisäänrakennettuja" objekteja. Nämä sisäänrakennetut objektit ovat käytettävissä riippumatta ikkunan sisällöstä ja toimivat riippumatta siitä, mitä sivuja selaimesi on ladannut.
JavaScriptin oppiminen
Tämä artikkeli on osa JavaWorldin teknistä sisältöarkistoa. Voit oppia paljon JavaScript-ohjelmoinnista lukemalla artikkeleita JavaScript-sarja, muista vain, että osa tiedoista on todennäköisesti vanhentuneita. Katso lisätietoja JavaScript-ohjelmoinnista kohdista "JavaScriptin ja lomakkeiden käyttö" ja "JavaScript-ohjelmien virheenkorjaus".
Sisäänrakennetut objektit ovat Date, Math, String, Array ja Object. Jokaista käytetään ainutlaatuisella ja ei-aivan johdonmukaisella tavalla. Lisäksi uudemmat JavaScript-versiot (kuten löytyy Netscape "Atlasista", joka on tällä hetkellä beetaversio), toteuttavat useita näistä objekteista eri tavalla kuin Netscape 2.0: ssa. Tässä sarakkeessa käsitellään näitä sisäänrakennettuja objekteja ja niiden käyttöä. Ja me panemme merkille haittoja, joita kohtaat käyttäessäsi näitä objekteja JavaScript-sivuillesi.
Merkkijono-objektin ymmärtäminen
Kaikista JavaScript-objekteista String-objekti on yleisimmin käytetty. Netscape 2.0 JavaScripti-toteutuksessa uudet merkkijono-objektit luodaan implisiittisesti käyttämällä muuttujamääritystä. Esimerkiksi,
var myString = "Tämä on merkkijono";
luo merkkijonon, johon määritetty teksti kutsutaan myString.
Netscape 2.0: ssa ei ole varsinaista merkkijonoa kutsuttua objektia, ja uuden String-objektin ilmentäminen uuden käskyn avulla johtaa virheeseen, koska String (tai merkkijono) ei ole määritelty avainsana. Netscape-version Atlas-versiossa merkkijono on vilpitön esine, ja String-avainsanalla voidaan luoda uusia merkkijonoja. Seuraavat kaksi lähestymistapaa ovat sallittuja Atlasissa, mutta eivät Netscape 2.0: ssa.
var myString = uusi merkkijono (); myString = "Tämä on merkkijono";
ja
var myString = uusi merkkijono ("Tämä on merkkijono");
Merkkijono-esineillä on yksi ominaisuus: pituus. Pituusominaisuus palauttaa merkkijonon pituuden ja käyttää syntaksia merkkijono.pituus,
jossa merkkijono on merkkijonomuuttujan nimi. Molemmat seuraavista näytöistä 16.
hälytys ("Tämä on merkkijono". pituus)
ja
var myString = "Tämä on merkkijono"; hälytys (myString.length);
Vaikka merkkijono-ominaisuuksia voi olla vain yksi, JavaScript tukee useita menetelmiä, joita voidaan käyttää merkkijonojen kanssa. Nämä menetelmät voidaan jakaa karkeasti kahteen laajaan leiriin: merkkijonojen hallinta ja tekstimuoto.
Lisää JavaWorldista
Haluatko lisää Java-yritysuutisia? Hanki JavaWorld Enterprise Java -uutiskirje postilaatikkoosi.
Merkkijonojen hallintamenetelmiin sisältyy substing
, sisällysluettelo
, lastIndexOf
ja alempaan tapaukseen
. Näitä käytetään palauttamaan tai muuttamaan merkkijonon sisältöä jollain tavalla. Esimerkiksi alaosamenetelmä palauttaa määritetyn merkkijonon osan. IndexOf-menetelmä määrittää merkin tai merkkiryhmän sijainnin merkkijonossa. Ja toLowerCase-menetelmä muuntaa merkkijonon pieniksi kirjaimiksi. (Kuten voitte kuvitella, on myös a toUpperCase
menetelmä.)
Tekstimuotoilumenetelmiä käytetään muotoilemaan tekstiä asiakirjassa jollakin erityisellä tavalla, ja ne tarjotaan vaihtoehtona HTML-tunnisteiden käytölle samaan tarkoitukseen. Näitä menetelmiä ovat iso, pieni, sup, sub, ankkuri, linkki ja vilkkuminen.
Merkkijonomenetelmiä voidaan käyttää suoraan merkkijonoissa tai merkkijonoja sisältävissä muuttujissa. Menetelmät käyttävät aina avoimia ja suljettuja sulkeita, vaikka menetelmä ei käytä parametreja. Esimerkiksi, jos haluat muuntaa tekstin isoksi, käytä jotakin seuraavista:
var tempVar = "tämä teksti on nyt isoja kirjaimia" .toUpperCase ();
tai
var myString = "tämä teksti on nyt isoja kirjaimia"; var tempVar = myString.toUpperCase ();
Netscape 2.0: ssa on vain yksi merkkijono-objekti, ja kaikki merkkijonot luodaan siitä. Käänteisesti merkkijonot ovat Atlas-luokan ensimmäisen luokan esineitä, ja jokaista uutta merkkijonoa käsitellään erillisenä objektina. Merkkijonojen yhden objektin käyttäytyminen Netscape 2.0: ssa voi aiheuttaa hienovaraisia sivuvaikutuksia. Ota seuraava lyhyt komentosarja. Luodaan kaksi merkkijonoa: merkkijono 1
ja merkkijono2
. Uusi ominaisuus (nimeltään extra) määritetään merkkijonolle1. Silti hälytysviesti osoittaa, että ominaisuus kuuluu nyt myös merkkijonoon2.
string1 = "tämä on merkkijono 1" string2 = "tämä on merkkijono 2" string1.extra = "uusi ominaisuus" -hälytys (string2.extra)
Teknisesti ottaen merkkijonot ovat "muuttumattomia" JavaScriptissä. Eli merkkijonon sisältö on staattinen eikä sitä voi muuttaa. Netscape 2.0: ssa JavaScript pystyy muokkaamaan merkkijonoa vain luomalla sille uuden sijainnin muistiin. Tämän vuoksi komentosarja, joka muokkaa merkkijonoa monta kertaa, on altis muistivirheille. Aina kun merkkijonoa muutetaan, JavaScript luo uuden sijainnin muistiin uudelle versiolle. Uudet merkkijonot luodaan ennen roskien keräämistä vanhan merkkijonon tuhoamiseksi. Lopulta JavaScript käyttää kaikkea käytettävissä olevaa muistia, ja virheilmoitus tapahtuu.
Klassinen esimerkki tästä ongelmasta näkyy suosituissa JavaScript-viestien vierityspalveluissa, joissa viesti vierittää tilarivillä tai tekstiruudussa. Kullekin kierrokselle vieritin määrittää uudelleen merkkijonomuuttujan, joka näytetään. Muisti loppuu lopulta, koska JavaScript luo merkkijonosta uusia esiintymiä jokaisen passin yhteydessä. Esimerkiksi seuraava komentosarja aiheuttaa lopulta (ennemmin joillakin alustoilla, kuten Windows 3.1) "muistin loppumisen" -virheen:
var laskea = 0; var text = "Tämä on JavaScript-vierityksen testi."; vieritä (); toiminnon vieritys () {var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count <text.length) count ++; muuten lasketaan = 0; setTimeout ("vieritä ()", 333); // 333ms on Netscape 2.0: n vähimmäisviive}
Yksinkertainen uudelleenkirjoittaminen välttää uusien muistilohkojen luomisen ongelman. Poista myString-muuttujan määritys ja jäsennä teksti suoraan tilariville käyttämällä window.status-ohjelmaa.
window.status = text.substring (määrä, teksti.pituus) + text.substring (0, Count)
(Vaikka yllä oleva lähestymistapa välttää JavaScriptiä merkkijono-objektin replikointiongelman, muistivuotoja esiintyy silti setTimeout-menetelmä
. SetTimeout kuluttaa kaiken käytettävissä olevan muistin monien iteraatioiden - tyypillisesti useita tuhansia tai enemmän - jälkeen, ja lopulta JavaScript näyttää "muistia loppu" -viestin.)
Tässä on viitteeksi seuraavat menetelmät ja ominaisuudet, joita käytetään JavaScript-merkkijono-objektissa:
Merkkijonon ominaisuudet
pituus | Merkkijonon pituus |
Merkkijonomenetelmät
ankkuri | Luo nimetty ankkuri (hypertekstikohde) |
iso | Asettaa tekstin suureksi |
räpäytys | Asettaa tekstin vilkkumaan |
lihavoitu | Asettaa tekstin lihavoituksi |
merkki | Palauttaa merkin määritettyyn kohtaan |
kiinteä | Asettaa tekstin kiinteän äänen kirjasimella |
fontin väri | Asettaa fontin värin |
Fonttikoko | Asettaa fonttikoon |
sisällysluettelo | Palauttaa merkin x ensimmäisen esiintymisen paikasta y alkaen |
kursivoitu | Asettaa tekstin kursiiviksi |
lastIndexOf | Palauttaa merkin x viimeisen esiintymän alkaen sijainnista y |
linkki | Luo hyperlinkin |
pieni | Asettaa tekstin pieneksi |
lakko | Asettaa tekstin yliviivatuksi |
sub | Asettaa tekstin alaindeksiin |
substing | Palauttaa merkkijonon osan |
sup | Asettaa tekstin yläindeksiin |
toLowerString | Muuntaa merkkijonon pieniksi |
toUpperString | Muuntaa merkkijonon isoksi |
JavaScriptin käyttö tieteellisenä laskimena
JavaScriptin Math-objekti tarjoaa edistyneitä aritmeettisia ja trigonometrisiä funktioita, jotka laajentuvat JavaScriptin aritmeettisiin perusoperaattoreihin (plus, miinus, kerro, jaa). JavaScript-objekti Math-objekti on lainattu Java-ohjelmasta. Itse asiassa Math-objektin toteutus JavaScript-ohjelmassa on läheisesti samankaltainen Java-luokan Math-luokan kanssa, paitsi että JavaScript Math -objekti tarjoaa vähemmän menetelmiä.
JavaScriptin Math-objektiominaisuuksia käsitellään vakioina. Itse asiassa ominaisuusnimet ovat kaikissa isoissa kirjaimissa, muuttujien vakioiden isojen kirjainten käytön tavan mukaan. Nämä ominaisuudet palauttavat usein käytetyt arvot, mukaan lukien pi ja neliöjuuri 2. Math-menetelmiä käytetään matemaattisissa ja trigonometrisissä laskelmissa. Käteviä matemaattisten objektien menetelmiä ovat enimmäismäärä, lattia, voimansiirto (eksponentti), max, min, pyöreä ja satunnainen. (Satunnainen on kuitenkin käytettävissä vain käytettäessä X Window -alustaa.)
Math-objekti on staattinen, joten sinun ei tarvitse luoda uutta Math-objektia voidaksesi käyttää sitä. Pääset Math-objektin ominaisuuksiin ja menetelmään vain määrittämällä Math-objekti sekä haluamasi menetelmä tai ominaisuus. Voit esimerkiksi palauttaa arvon pi, sinä käytät:
var pi = Math.PI;
Vastaavasti matemaattisen menetelmän käyttämiseksi annat menetelmän nimen sekä parametrit, joita haluat käyttää. Esimerkiksi pyöristää arvo pi, käytät:
var pi = Math.PI; var pieAreRound = Matemaattinen kierros (pi); // näyttää 3
Huomaa, että sinun on määritettävä Math-objekti nimen mukaan jokaiselle käytettävälle Math-menetelmälle / ominaisuudelle. JavaScript ei tunnista avainsanoja PI ja pyöristää itsestään. Poikkeus: voit käyttää kanssa
-lauseke yhdistää menetelmien ja ominaisuuksien nimet Math-objektiin. Tämä tekniikka on kätevä tilaa säästävä, kun sinun on käytettävä useita matemaattisia ominaisuuksia ja menetelmiä. Edellinen esimerkki voidaan kirjoittaa muodossa
merkinnällä (Math) {var pi = PI; var pieAreRound = pyöreä (pi); hälytys (pieAreRound)}
Tässä on viitteellesi seuraavat ominaisuudet ja menetelmät, joita JavaScriptin Math-objekti tukee.
Matemaattiset ominaisuudet
E | Eulerin vakio |
LN2 | 2: n luonnollinen logaritmi |
LN10 | 10: n luonnollinen logaritmi |
LOG2E | E: n perus 2 logaritmi |
LOG10E | Perus 10 logaritmi e |
PI | PI: n numeerinen ekvivalentti: 3,14 jne. |
SQRT1_2 | Puolen neliöjuuri |
SQRT2 | 2: n neliöjuuri |
Matematiikan menetelmät
abs | Palauttaa luvun absoluuttisen arvon |
acos | Palauttaa luvun kaaren kosinin |
asin | Palauttaa luvun kaarisinuksen |
rusketus | Palauttaa luvun kaaren tangentin |
katto | Palauttaa pienimmän kokonaisluvun, joka on suurempi tai yhtä suuri kuin luku |
cos | Palauttaa luvun kosinin |
exp | Palauttaa e (Eulerin vakio) luvun voimaan |
lattia | Palauttaa suurimman kokonaisluvun, joka on pienempi tai yhtä suuri kuin argumenttinsa |
Hirsi | Palauttaa luvun luonnollisen logaritmin (perus-e) |
enint | Palauttaa suuremman kahdesta arvosta |
min | Palauttaa pienemmän kahdesta arvosta |
pow | Palauttaa luvun arvon, joka on määritetty teho |
satunnainen | Palauttaa satunnaisluvun (vain X-alustoilla) |
pyöristää | Palauttaa luvun pyöristettynä lähimpään kokonaisarvoon |
synti | Palauttaa luvun sinin |
sqrt | Palauttaa luvun neliöjuuren |
rusketus | Palauttaa luvun tangentin |
Pyydetään JavaScriptiä päivämäärälle
Java on lainannut myös Date-objektin, jota voidaan käyttää JavaScriptiä määrittämään nykyinen aika ja päivämäärä. Suosittu Date-objektin JavaScript-sovellus näyttää digitaalisen kellon tekstiruudussa. Komentosarja käyttää Date-objektia päivittämään kellon kerran sekunnissa. Date-objektia käytetään myös päivämäärälaskennan suorittamiseen. Esimerkiksi komentosarjasi saattaa määrittää päivien lukumäärän tietyn tulevan päivämäärän välillä. Voit käyttää tätä näyttämään "lähtölaskennan", kuten yrityksesi suuresta myynnistä jäljellä olevien päivien määrän.
JavaScript kohtelee Date-objektia konstruktoriluokan tavoin. Päivämäärän käyttämiseksi sinun on luotava uusi Date-objekti; voit sitten käyttää erilaisia päivämäärämenetelmiä päivämäärien saamiseksi ja asettamiseksi. (Date-objektilla ei ole ominaisuuksia.) Jos olet perehtynyt Java-luokassa olevaan Date-luokkaan, löydät JavaScript Date -objektin ominaisuudet suurelta osin samoilta. Yleisimmin käytetyt menetelmät ovat saada
menetelmiä, jotka saavat päivämäärän objektin arvon kellonajan ja päivämäärän. Nämä menetelmät ovat:
- getHours () - Palauttaa tunnin
- getMinutes () - Palauttaa minuutit
- getSeconds () - Palauttaa sekunnit
- getYear () - Palauttaa vuoden ("96" on 1996)
- getMonth () - Palauttaa kuukauden ("0" on tammikuu)
- getDate () - Palauttaa kuukauden päivän
- getDay () - Palauttaa viikonpäivän ("0" on sunnuntai)
(JavaScript's Date -objektissa säädetään myös Date-objektin kellonaika ja päivämäärä, mutta niitä käytetään harvoin.)
Uuden Date-objektin luominen voi olla useita muotoja. Voit palauttaa objektin, joka sisältää nykyisen päivämäärän ja kellonajan, käyttämällä Date-objektia ilman parametreja. Seuraavassa, date_obj
on uusi objekti, joka sisältää nykyisen päivämäärän ja kellonajan arvon, järjestelmän tietokoneen kellon asettaman.
var date_obj = uusi päivämäärä ();
Vaihtoehtoisesti voit määrittää tietyn päivämäärän ja kellonajan osana päivämäärän rakennuttajaa. Kumpikin näistä menetelmistä on sallittua - molemmat asettavat uudeksi päivämääräobjektiksi 1. tammikuuta 1997 keskiyöhön paikallista aikaa.
var date_obj = uusi päivämäärä ("1. tammikuuta 1997 00:00:00")
ja
var date_obj = uusi päivämäärä (97, 0, 1, 12, 0, 0)
Jos haluat käyttää päivämäärämenetelmää, liitä menetelmä aiemmin luomaasi päivämääräobjektiin. Voit esimerkiksi palauttaa kuluvan vuoden käyttämällä:
var now = uusi päivämäärä (); var yearNow = nyt.getYear ();
Tässä on viitteeksi seuraavat menetelmät, joita JavaScript-päivämäärä-objekti tukee.