JavaScript har en rekke innebygde objekter som utvider språkets fleksibilitet. Disse objektene er dato, matematikk, streng, matrise og objekt. Flere av disse objektene er "lånt" fra Java-språkspesifikasjonen, men JavaScript-implementeringen av dem er annerledes. Hvis du er kjent med Java, vil du nøye undersøke JavaScript's innebygde objekttyper for å unngå forvirring.
JavaScript-objektmodellen er enkel. Hovedtyngden av disse objektene omhandler vindusinnhold - dokumenter, lenker, skjemaer og så videre. I tillegg til vindusinnholdsobjekter støtter JavaScript en liten håndfull "innebygde" objekter. Disse innebygde objektene er tilgjengelige uavhengig av vinduinnhold og fungerer uavhengig av hvilken side nettleseren din har lastet inn.
Lære JavaScript
Denne artikkelen er en del av JavaWorlds tekniske innholdsarkiv. Du kan lære mye om JavaScript-programmering ved å lese artikler i JavaScript-serien, bare husk at noe av informasjonen sannsynligvis vil være utdatert. Se "Bruke JavaScript og skjemaer" og "Feilsøke JavaScript-programmer" for mer om programmering med JavaScript.
De innebygde objektene er dato, matematikk, streng, matrise og objekt. Hver brukes på en unik og ikke helt konsistent måte. Videre implementerer nyere versjoner av JavaScript (som finnes i Netscape "Atlas", for tiden i beta) flere av disse objektene på en annen måte enn i Netscape 2.0. I denne kolonnen vil vi ta for oss disse innebygde objektene og hvordan du bruker dem. Og vi vil notere deg merkene du vil støte på når du bruker disse objektene på JavaScript-sidene dine.
Forståelse av strengobjektet
Av alle JavaScript-objekter er String-objektet det mest brukte. I JavaScript-implementeringen av Netscape 2.0 opprettes nye strengobjekter implisitt ved hjelp av en variabel tildeling. For eksempel,
var myString = "Dette er en streng";
oppretter en streng, med den angitte teksten, kalt myString.
I Netscape 2.0 er det ikke noe faktisk objekt som kalles streng, og forsøk på å instansiere et nytt strengobjekt ved hjelp av den nye setningen resulterer i en feil, da streng (eller streng) ikke er et definert nøkkelord. I Atlas-versjonen av Netscape er imidlertid String et bona fide-objekt, og String-nøkkelordet kan brukes til å lage nye strenger. Følgende to tilnærminger er tillatt i Atlas, men ikke i Netscape 2.0.
var myString = ny streng (); myString = "Dette er en streng";
og
var myString = ny streng ("Dette er en streng");
Strengobjekter har en egenskap: lengde. Lengdeegenskapen returnerer lengden på strengen og bruker syntaksen streng.lengde,
hvor streng er navnet på strengvariabelen. Begge følgende display 16.
varsel ("Dette er en streng" .lengde)
og
var myString = "Dette er en streng"; alarm (myString.length);
Selv om det kan være bare én strengegenskap, støtter JavaScript et stort antall metoder som kan brukes med strenger. Disse metodene kan grovt deles inn i to brede leirer: strengadministrasjon og tekstformat.
Mer fra JavaWorld
Vil du ha flere Java-bedriftsnyheter? Få JavaWorld Enterprise Java-nyhetsbrevet levert i innboksen din.
Strengstyringsmetoder inkluderer underlag
, oversikt over
, lastIndexOf
, og toLowerCase
. Disse brukes til å returnere eller endre innholdet i strengen på en eller annen måte. For eksempel returnerer substringmetoden en spesifisert del av en streng. IndexOf-metoden bestemmer plasseringen til et tegn eller en gruppe tegn i en streng. Og toLowerCase-metoden konverterer strengen til små bokstaver. (Som du kan forestille deg, er det også en toUpperCase
metode.)
Tekstformatmetoder brukes til å formatere tekst i et dokument på en spesiell måte, og er gitt som alternativer til å bruke HTML-koder for samme formål. Disse metodene inkluderer stor, liten, sup, sub, anker, lenke og blink.
Strengmetoder kan brukes direkte på strenger, eller på variabler som inneholder strenger. Metoder bruker alltid åpne og lukkede parenteser, selv om metoden ikke bruker parametere. For eksempel, for å konvertere tekst til store bokstaver, bruker du ett av følgende:
var tempVar = "denne teksten er nå store bokstaver" .toUpperCase ();
eller
var myString = "denne teksten er nå med store bokstaver"; var tempVar = myString.toUpperCase ();
I Netscape 2.0 er det bare ett strengobjekt, og alle strengene er opprettet fra det. Omvendt er strenger førsteklasses objekter i Atlas, og hver nye streng behandles som et separat objekt. Enkelt-objekt oppførsel av strenger i Netscape 2.0 kan forårsake noen subtile bivirkninger. Ta det korte manus-segmentet som følger. To strenger lages: streng1
og streng2
. En ny egenskap (kalt ekstra) er tildelt streng1. Likevel viser varselmeldingen at eiendommen også nå tilhører streng2.
string1 = "dette er streng 1" string2 = "dette er streng 2" string1.extra = "ny egenskap" -varsel (string2.extra)
Teknisk sett er strengene "uforanderlige" i JavaScript. Det vil si at innholdet i strengen er statisk og ikke kan endres. I Netscape 2.0 kan JavaScript bare endre en streng ved å opprette en ny plassering i minnet for den. På grunn av dette er et skript som endrer en streng mange ganger utsatt for minnefeil. Hver gang strengen endres, oppretter JavaScript en ny plassering i minnet for den nye versjonen. Nye strenger blir opprettet før søppeloppsamling finner sted for å ødelegge den gamle strengen. Til slutt bruker JavaScript alt tilgjengelig minne, og det oppstår en "tomt for minne" -feil.
Et klassisk eksempel på dette problemet kan sees i de populære JavaScript "meldingsrullene", der en melding ruller i statuslinjen eller en tekstboks. For hvert pass omdefinerer rulle strengvariabelen som vises. Minne blir til slutt tømt fordi JavaScript oppretter nye forekomster av strengen med hvert pass. For eksempel vil følgende skript til slutt (før på noen plattformer, for eksempel Windows 3.1) forårsake en "tomt minne" -feil:
var count = 0; var text = "Dette er en test av en JavaScript-rulle."; bla (); funksjonsrulle () {var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count <text.length) count ++; annet teller = 0; setTimeout ("bla ()", 333); // 333ms er minimum forsinkelse for Netscape 2.0}
En enkel omskriving unngår problemet med å skape nye minneblokker. Slett tildelingen av myString-variabelen, og analyser teksten direkte til statuslinjen ved hjelp av window.status.
window.status = text.substring (count, text.length) + text.substring (0, Count)
(Mens fremgangsmåten ovenfor unngår JavaScript's replikeringsproblem med streng-objekt, oppstår minnelekkasjer fortsatt på grunn av bruken av setTimeout-metoden
. Over mange iterasjoner - vanligvis flere tusen eller mer - vil setTimeout forbruke alt tilgjengelig minne, og til slutt vil JavaScript vise en "tom for minne" -melding.)
For din referanse, her er metodene og egenskapene som brukes med JavaScript-strengobjektet:
Strengegenskaper
lengde | Lengden på en streng |
Strengmetoder
anker | Oppretter et navngitt anker (hypertekstmål) |
stor | Setter tekst til stor |
blinke | Setter tekst til å blinke |
dristig | Setter tekst til fet skrift |
charAt | Returnerer tegnet på en spesifisert posisjon |
fikset | Angir tekst med skrifttype med fast tonehøyde |
skriftfarge | Angir skriftfargen |
skriftstørrelse | Angir skriftstørrelse |
oversikt over | Returnerer den første forekomsten av tegn x fra posisjon y |
kursiv | Setter tekst til kursiv |
lastIndexOf | Returnerer den siste forekomsten av tegn x fra posisjon y |
lenke | Oppretter en hyperkobling |
liten | Setter tekst til liten |
streik | Setter tekst til streik |
under | Setter tekst til abonnement |
underlag | Returnerer en del av en streng |
sup | Setter tekst til overskrift |
toLowerString | Konverterer en streng til små bokstaver |
toUpperString | Konverterer en streng til store bokstaver |
Bruke JavaScript som vitenskapelig kalkulator
JavaScript's Math-objekt gir avanserte aritmetiske og trigonometriske funksjoner, og utvider JavaScript-grunnleggende aritmetiske operatorer (pluss, minus, multipliser, del). Matematikkobjektet i JavaScript er lånt fra Java. Faktisk er implementeringen av Math-objektet i JavaScript nær parallelt med Math-klassen i Java, bortsett fra at JavaScript Math-objektet tilbyr færre metoder.
JavaScript's Math-objektegenskaper behandles som konstanter. Egenskapsnavnene er faktisk i store bokstaver, i henhold til den vanlige konvensjonen om å kapitalisere variable konstanter. Disse egenskapene returnerer ofte brukte verdier, inkludert pi og kvadratroten til 2. Matematiske metoder brukes i matematiske og trigonometriske beregninger. Praktiske metoder for matematikkobjekter inkluderer tak, gulv, strøm, eksp (eksponent), maks, min, rund og tilfeldig. (Tilfeldig er imidlertid bare tilgjengelig når du bruker X Window-plattformen.)
Matematikkobjektet er statisk, så du trenger ikke å opprette et nytt matematikkobjekt for å kunne bruke det. For å få tilgang til egenskapene og metoden til Math-objektet, spesifiserer du bare Math-objektet, sammen med metoden eller egenskapen du ønsker. For eksempel for å returnere verdien av pi, du bruker:
var pi = Math.PI;
På samme måte, for å bruke en matematikkmetode, oppgir du navnet på metoden, sammen med parametrene du vil bruke. For eksempel for å avrunde verdien av pi, vil du bruke:
var pi = Math.PI; var pieAreRound = Math.round (pi); // viser 3
Merk at du må spesifisere matematikkobjektet etter navn for hver matematikkmetode / -egenskap du ønsker å bruke. JavaScript gjenkjenner ikke nøkkelordene PI og avrunder helt alene. Unntak: du kan bruke med
uttalelse for å knytte navnene på metoder og egenskaper til matematikkobjektet. Denne teknikken er en praktisk plassbesparende når du må bruke flere matematiske egenskaper og metoder. Det forrige eksemplet kan skrives som
med (Matematikk) {var pi = PI; var pieAreRound = rund (pi); varsel (pieAreRound)}
For din referanse, her er egenskapene og metodene som støttes av JavaScript's Math-objekt.
Matematikkegenskaper
E | Eulers konstant |
LN2 | Den naturlige logaritmen til 2 |
LN10 | Den naturlige logaritmen på 10 |
LOG2E | Basis 2 logaritmen til e |
LOG10E | Basis 10 logaritmen til e |
PI | Den numeriske ekvivalenten til PI: 3.14 etc. |
SQRT1_2 | Kvadratroten til halvparten |
SQRT2 | Kvadratroten til 2 |
Matematiske metoder
abs | Returnerer den absolutte verdien til et tall |
acos | Returnerer lysbue-cosinus for et tall |
som i | Returnerer buensinusen til et tall |
brunfarge | Returnerer buetangens for et tall |
tak | Returnerer det minste heltallet større enn eller lik et tall |
cos | Returnerer cosinus til et tall |
eksp | Returnerer e (Eulers konstant) til kraften til et tall |
gulv | Returnerer det største heltallet mindre enn eller lik argumentet |
Logg | Returnerer den naturlige logaritmen (base e) til et tall |
maks | Returnerer den største av to verdier |
min | Returnerer den minste av to verdier |
pow | Returnerer verdien av et tall ganger en spesifisert effekt |
tilfeldig | Returnerer et tilfeldig tall (kun X-plattformer) |
rund | Returnerer et tall avrundet til nærmeste helverdi |
synd | Returnerer sinus til et tall |
sqrt | Returnerer kvadratroten til et tall |
solbrun | Returnerer tangenten til et tall |
Ber JavaScript om en dato
Også lånt av Java er Date-objektet, som kan brukes i JavaScript for å bestemme gjeldende tid og dato. En populær JavaScript-applikasjon av Date-objektet viser en digital klokke i en tekstboks. Skriptet bruker Date-objektet til å oppdatere klokken en gang hvert sekund. Du bruker også Date-objektet til å utføre datematematikk. For eksempel kan skriptet ditt bestemme antall dager mellom nå og en bestemt fremtidig dato. Du kan bruke dette til å vise en "nedtelling", for eksempel antall dager igjen av selskapets store salg.
JavaScript behandler Date-objektet som en konstruktørklasse. For å bruke Date må du opprette et nytt Date-objekt; Du kan deretter bruke de forskjellige datometodene for å få og angi datoer. (Date-objektet har ingen egenskaper.) Hvis du er kjent med Date-klassen i Java, vil du finne egenskapene til JavaScript Date-objektet stort sett de samme. De mest brukte metodene er få
metoder, som henter tid og dato for verdien i Date-objektet. Disse metodene er:
- getHours () - Returnerer timen
- getMinutes () - Returnerer minuttene
- getSeconds () - Returnerer sekunder
- getYear () - Returnerer året ("96" er 1996)
- getMonth () - Returnerer måneden ("0" er januar)
- getDate () - Returnerer dagen i måneden
- getDay () - Returnerer ukedagen ("0" er søndag)
(JavaScript-datoobjektet gir også innstilling av tid og dato for datoobjektet, men disse brukes sjelden.)
Å konstruere et nytt Date-objekt kan ha flere former. For å returnere et objekt som inneholder gjeldende dato og klokkeslett, bruker du Date-objektet uten parametere. I følgende, date_obj
er et nytt objekt som inneholder verdien av gjeldende dato og klokkeslett, som angitt av datamaskinens systemklokke.
var date_obj = ny dato ();
Alternativt kan du spesifisere en gitt dato og tid som en del av datokonstruktøren. En av disse metodene er tillatt - begge setter det nye datoobjektet til 1. januar 1997 ved midnatt lokal tid.
var date_obj = ny dato ("1. januar 1997 00:00:00")
og
var date_obj = ny dato (97, 0, 1, 12, 0, 0)
For å bruke en datometode, legg metoden til datoobjektet du tidligere opprettet. Hvis du for eksempel vil returnere inneværende år, bruker du:
var nå = ny dato (); var yearNow = now.getYear ();
For din referanse, her er metodene som støttes av JavaScript-objektet Date.