Ohjelmointi

JavaScriptin sisäänrakennettujen objektien käyttäminen

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, lastIndexOfja 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

pituusMerkkijonon pituus

Merkkijonomenetelmät

ankkuriLuo nimetty ankkuri (hypertekstikohde)
isoAsettaa tekstin suureksi
räpäytysAsettaa tekstin vilkkumaan
lihavoituAsettaa tekstin lihavoituksi
merkkiPalauttaa merkin määritettyyn kohtaan
kiinteäAsettaa tekstin kiinteän äänen kirjasimella
fontin väriAsettaa fontin värin
FonttikokoAsettaa fonttikoon
sisällysluetteloPalauttaa merkin x ensimmäisen esiintymisen paikasta y alkaen
kursivoituAsettaa tekstin kursiiviksi
lastIndexOfPalauttaa merkin x viimeisen esiintymän alkaen sijainnista y
linkkiLuo hyperlinkin
pieniAsettaa tekstin pieneksi
lakkoAsettaa tekstin yliviivatuksi
subAsettaa tekstin alaindeksiin
substingPalauttaa merkkijonon osan
supAsettaa tekstin yläindeksiin
toLowerStringMuuntaa merkkijonon pieniksi
toUpperStringMuuntaa 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

EEulerin vakio
LN22: n luonnollinen logaritmi
LN1010: n luonnollinen logaritmi
LOG2EE: n perus 2 logaritmi
LOG10EPerus 10 logaritmi e
PIPI: n numeerinen ekvivalentti: 3,14 jne.
SQRT1_2Puolen neliöjuuri
SQRT22: n neliöjuuri

Matematiikan menetelmät

absPalauttaa luvun absoluuttisen arvon
acosPalauttaa luvun kaaren kosinin
asinPalauttaa luvun kaarisinuksen
rusketusPalauttaa luvun kaaren tangentin
kattoPalauttaa pienimmän kokonaisluvun, joka on suurempi tai yhtä suuri kuin luku
cosPalauttaa luvun kosinin
expPalauttaa e (Eulerin vakio) luvun voimaan
lattiaPalauttaa suurimman kokonaisluvun, joka on pienempi tai yhtä suuri kuin argumenttinsa
HirsiPalauttaa luvun luonnollisen logaritmin (perus-e)
enintPalauttaa suuremman kahdesta arvosta
minPalauttaa pienemmän kahdesta arvosta
powPalauttaa luvun arvon, joka on määritetty teho
satunnainenPalauttaa satunnaisluvun (vain X-alustoilla)
pyöristääPalauttaa luvun pyöristettynä lähimpään kokonaisarvoon
syntiPalauttaa luvun sinin
sqrtPalauttaa luvun neliöjuuren
rusketusPalauttaa 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.