Programmering

Ved hjelp av JavaScript's innebygde objekter

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

lengdeLengden på en streng

Strengmetoder

ankerOppretter et navngitt anker (hypertekstmål)
storSetter tekst til stor
blinkeSetter tekst til å blinke
dristigSetter tekst til fet skrift
charAtReturnerer tegnet på en spesifisert posisjon
fiksetAngir tekst med skrifttype med fast tonehøyde
skriftfargeAngir skriftfargen
skriftstørrelseAngir skriftstørrelse
oversikt overReturnerer den første forekomsten av tegn x fra posisjon y
kursivSetter tekst til kursiv
lastIndexOfReturnerer den siste forekomsten av tegn x fra posisjon y
lenkeOppretter en hyperkobling
litenSetter tekst til liten
streikSetter tekst til streik
underSetter tekst til abonnement
underlagReturnerer en del av en streng
supSetter tekst til overskrift
toLowerStringKonverterer en streng til små bokstaver
toUpperStringKonverterer 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

EEulers konstant
LN2Den naturlige logaritmen til 2
LN10Den naturlige logaritmen på 10
LOG2EBasis 2 logaritmen til e
LOG10EBasis 10 logaritmen til e
PIDen numeriske ekvivalenten til PI: 3.14 etc.
SQRT1_2Kvadratroten til halvparten
SQRT2Kvadratroten til 2

Matematiske metoder

absReturnerer den absolutte verdien til et tall
acosReturnerer lysbue-cosinus for et tall
som iReturnerer buensinusen til et tall
brunfargeReturnerer buetangens for et tall
takReturnerer det minste heltallet større enn eller lik et tall
cosReturnerer cosinus til et tall
ekspReturnerer e (Eulers konstant) til kraften til et tall
gulvReturnerer det største heltallet mindre enn eller lik argumentet
LoggReturnerer den naturlige logaritmen (base e) til et tall
maksReturnerer den største av to verdier
minReturnerer den minste av to verdier
powReturnerer verdien av et tall ganger en spesifisert effekt
tilfeldigReturnerer et tilfeldig tall (kun X-plattformer)
rundReturnerer et tall avrundet til nærmeste helverdi
syndReturnerer sinus til et tall
sqrtReturnerer kvadratroten til et tall
solbrunReturnerer 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 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.

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