Programavimas

Naudojant „JavaScript“ įmontuotus objektus

„JavaScript“ sportuoja daugeliu integruotų objektų, kurie išplečia kalbos lankstumą. Šie objektai yra data, matematika, eilutė, masyvas ir objektas. Keli iš šių objektų yra „pasiskolinti“ iš „Java“ kalbos specifikacijos, tačiau „JavaScript“ juos įgyvendina skirtingai. Jei esate susipažinę su „Java“, norėdami išvengti painiavos, turėtumėte atidžiai išnagrinėti įmontuotus „JavaScript“ objektų tipus.

„JavaScript“ objekto modelis yra paprastas. Didžioji šių objektų dalis susijusi su lango turiniu - dokumentais, nuorodomis, formomis ir pan. Be langų turinio objektų, „JavaScript“ palaiko nedidelę saują „įmontuotų“ objektų. Šie įmontuoti objektai yra prieinami neatsižvelgiant į lango turinį ir veikia nepriklausomai nuo jūsų naršyklės įkelto puslapio.

Mokytis „JavaScript“

Šis straipsnis yra „JavaWorld“ techninio turinio archyvo dalis. Galite daug sužinoti apie „JavaScript“ programavimą skaitydami straipsnius „JavaScript“ serija, tiesiog nepamirškite, kad dalis informacijos gali būti pasenusi. Norėdami sužinoti daugiau apie programavimą naudojant „JavaScript“, žr. „„ JavaScript “ir formų naudojimas“ ir „„ JavaScript “programų derinimas“.

Įmontuoti objektai yra data, matematika, eilutė, masyvas ir objektas. Kiekvienas iš jų naudojamas unikaliai ir ne visai nuosekliai. Be to, naujesnės „JavaScript“ versijos (kaip nustatyta „Netscape“ Atlas “, šiuo metu beta versijoje) kelis iš šių objektų įgyvendina kitaip nei„ Netscape 2.0 “. Šiame stulpelyje aptarsime šiuos įmontuotus objektus ir kaip juos naudoti. Ir mes atkreipsime dėmesį į keistenybes, su kuriomis susidursite pritaikydami šiuos objektus savo „JavaScript“ puslapiuose.

Straipsnio objekto supratimas

Iš visų „JavaScript“ objektų dažniausiai naudojamas „String“ objektas. „Netscape 2.0“ „JavaScript“ diegime nauji eilutės objektai kuriami netiesiogiai naudojant kintamojo priskyrimą. Pavyzdžiui,

var myString = "Tai yra eilutė";

sukuria eilutę su nurodytu tekstu, vadinamą „myString“. „Netscape 2.0“ nėra jokio faktinio objekto, vadinamo eilute, ir bandymas sukurti naują eilutės objektą naudojant naują sakinį sukelia klaidą, nes eilutė (arba eilutė) nėra apibrėžtas raktinis žodis. Tačiau „Netscape“ versijoje „Atlas“ eilutė yra sąžiningas objektas, o raktinį žodį „String“ galima naudoti kuriant naujas eilutes. Šie du metodai leidžiami „Atlas“, bet ne „Netscape 2.0“.

var myString = nauja eilutė (); myString = "Tai yra eilutė";

ir

var myString = nauja eilutė ("Tai yra eilutė");

Styginiai objektai turi vieną savybę: ilgis. Ypatybė ilgis grąžina eilutės ilgį ir naudoja sintaksę string.length, kur eilutė yra eilutės kintamojo pavadinimas. Abu šie rodomi 16.

įspėjimas ("Tai yra eilutė". ilgis)

ir

var myString = "Tai yra eilutė"; perspėjimas („myString.length“);

Nors gali būti tik viena eilutės ypatybė, „JavaScript“ palaiko daugybę metodų, kuriuos galima naudoti su eilutėmis. Šiuos metodus galima apytiksliai suskirstyti į dvi plačias grupes: eilučių valdymą ir teksto formatą.

Daugiau iš „JavaWorld“

Norite daugiau „Java“ įmonės naujienų? Gaukite „JavaWorld Enterprise Java“ naujienlaiškį, pristatytą į gautuosius.

Stygų valdymo metodai apima substring, indeksas, lastIndexOfir toLowerCase. Jie naudojami tam, kad grąžintų arba pakeistų eilutės turinį. Pavyzdžiui, substringo metodas grąžina nurodytą eilutės dalį. „IndexOf“ metodas nustato simbolio ar simbolių grupės vietą eilutėje. Metodas „toLowerCase“ paverčia eilutę mažosiomis raidėmis. (Kaip galite įsivaizduoti, yra ir a toUpperCase metodas.)

Teksto formato metodai naudojami tam tikru specialiu būdu formatuojant dokumento tekstą ir pateikiami kaip alternatyvos HTML žymų naudojimui tam pačiam tikslui. Šie metodai apima didelį, mažą, sup, sub, inkarą, nuorodą ir mirksėjimą.

Stygų metodai gali būti naudojami tiesiai ant eilučių arba kintamųjų, kuriuose yra eilučių. Metoduose visada naudojami atviri ir uždari skliaustai, net jei metodas nenaudoja parametrų. Pavyzdžiui, jei norite konvertuoti tekstą į didžiąsias raides, naudokite vieną iš šių būdų:

var tempVar = "šis tekstas dabar yra didžiosios raidės" .toUpperCase ();

arba

var myString = "šis tekstas dabar yra didžioji raidė"; var tempVar = myString.toUpperCase ();

„Netscape 2.0“ yra tik vienas String objektas ir visos eilutės yra sukurtos iš jo. Priešingai, „Atlas“ eilutės yra pirmos klasės objektai, o kiekviena nauja eilutė traktuojama kaip atskiras objektas. Vieno objekto eilučių elgesys „Netscape 2.0“ gali sukelti subtilų šalutinį poveikį. Paimkite tolesnį trumpą scenarijų segmentą. Sukurtos dvi eilutės: eilutė1 ir eilutė2. 1 eilutei priskiriama nauja ypatybė (vadinama „extra“). Vis dėlto įspėjimo pranešimas rodo, kad nuosavybė dabar taip pat priklauso eilutei2.

 string1 = "tai yra 1 eilutė" string2 = "tai yra eilutė 2" string1.extra = "naujos ypatybės" įspėjimas (string2.extra) 

Techniškai kalbant, stygos yra „nekintamos“ „JavaScript“. Tai yra, eilutės turinys yra statiškas ir jos negalima pakeisti. „Netscape 2.0“ sistemoje „JavaScript“ gali modifikuoti eilutę tik sukurdamas jai naują atminties vietą. Dėl to scenarijus, daug kartų modifikuojantis eilutę, yra linkęs į atminties klaidas. Kiekvieną kartą, kai eilutė keičiama, „JavaScript“ sukuria naują vietą atmintyje naujai versijai. Prieš atliekant šiukšlių surinkimą sukuriamos naujos eilutės, kad būtų sunaikinta sena eilutė. Galų gale „JavaScript“ naudoja visą turimą atmintį ir įvyksta klaida „iš atminties“.

Klasikinį šios problemos pavyzdį galima pamatyti populiariuose „JavaScript“ „pranešimų slinkties įrankiuose“, kur pranešimas slenka būsenos juostoje arba teksto laukelyje. Kiekvienam leidimui slinktuvas iš naujo apibrėžia rodomą eilutės kintamąjį. Atmintis ilgainiui išsenka, nes „JavaScript“ su kiekvienu leidimu sukuria naujų eilutės egzempliorių. Pvz., Šis scenarijus galų gale (anksčiau kai kuriose platformose, pvz., „Windows 3.1“), sukels „atminties trūkumo“ klaidą:

 var skaičius = 0; var text = "Tai yra" JavaScript "slinkties testas."; slinkti (); funkcijos slinkimas () {var myString = text.substring (count, text.length) + text.substring (0, count) window.status = myString if (count <text.length) count ++; kitas skaičius = 0; setTimeout ("slinkti ()", 333); // 333ms yra mažiausia „Netscape 2.0“ uždelsimas} 

Paprastas perrašymas leidžia išvengti naujų atminties blokų kūrimo problemos. Ištrinkite kintamojo „myString“ priskyrimą ir analizuokite tekstą tiesiai į būsenos juostą naudodami window.status.

window.status = text.substring (skaičius, text.length) + text.substring (0, Count)

(Nors taikant pirmiau pateiktą metodą išvengiama „JavaScript“ eilutės-objekto replikacijos problemos, atminties nutekėjimas vis tiek įvyksta dėl to, kad naudojamas setTimeout metodas. „SetTimeout“ sunaudos visą turimą atmintį per daugelį pakartojimų - paprastai kelis tūkstančius ar daugiau - ir „JavaScript“ galiausiai parodys pranešimą „atminties nebėra“.)

Jūsų pavyzdžiu pateikiami metodai ir ypatybės, naudojami su „JavaScript“ eilutės objektu:

Styginių ypatybės

ilgioStygos ilgis

Styginių metodai

inkarasSukuria pavadintą inkarą (hiperteksto taikinys)
didelisNustato tekstą į didelį
mirksėtiNustato, kad tekstas mirksi
drąsusNustato tekstą paryškintu
charAtGrąžina simbolį nurodytoje vietoje
fiksuotasNustato tekstą fiksuoto tono šriftu
šrifto spalvaNustatoma šrifto spalva
šrifto dydisNustatomas šrifto dydis
indeksasGrąžina pirmąjį simbolio x atsiradimą, pradedant y padėtimi
kursyvasNustato kursyvą
lastIndexOfGrąžina paskutinį simbolio x įvykį, pradedant nuo y pozicijos
nuorodaSukuria hipersaitą
mažasNustato mažą tekstą
streikuotiNustato tekstą išbraukti
poskyrisNustato tekstą į indeksą
substringGrąžina eilutės dalį
supNustato tekstą į viršutinį indeksą
toLowerStringStygas paverčia mažosiomis
toUpperStringStygas paverčia didžiosiomis raidėmis

Naudojant „JavaScript“ kaip mokslinę skaičiuoklę

„JavaScript“ matematikos objektas teikia pažangias aritmetines ir trigonometrines funkcijas, išplėsdamas pagrindinius „JavaScript“ aritmetikos operatorius (pliusas, minusas, dauginimas, dalijimas). „Math“ objektas „JavaScript“ yra pasiskolintas iš „Java“. Tiesą sakant, „Math“ objekto įgyvendinimas „JavaScript“ glaudžiai atitinka „Math“ klasę „Java“, išskyrus tai, kad „JavaScript Math“ objekte siūloma mažiau metodų.

„JavaScript“ matematikos objekto ypatybės traktuojamos kaip konstantos. Tiesą sakant, nuosavybės pavadinimai rašomi didžiosiomis raidėmis, vadovaujantis įprasta kintamųjų konstantų didžiųjų raidžių rašymo tvarka. Šios savybės pateikia dažnai naudojamas vertes, įskaitant pi ir kvadratinė šaknis 2. Matematiniai ir trigonometriniai skaičiavimai naudojami matematikos metodai. Patogūs matematikos objektų metodai apima lubas, grindis, varpą, ekspoziciją (eksponentą), maks., Min., Apvalią ir atsitiktinę. (Tačiau atsitiktinis yra prieinamas tik naudojant „X Window“ platformą.)

„Math“ objektas yra statinis, todėl norint sukurti jį nereikia kurti naujo „Math“ objekto. Norėdami pasiekti „Math“ objekto ypatybes ir metodą, tiesiog nurodykite „Math“ objektą kartu su norimu metodu ar ypatybe. Pavyzdžiui, norint grąžinti reikšmę pi, tu naudoji:

var pi = Math.PI;

Panašiai, norėdami naudoti matematikos metodą, pateikite metodo pavadinimą ir norimus naudoti parametrus. Pavyzdžiui, norint suapvalinti pi, naudosite:

var pi = Math.PI; var pieAreRound = Math.round (pi); // rodo 3

Atminkite, kad kiekvienam matematikos metodui / ypatybei, kurią norite naudoti, turite nurodyti matematikos objektą pavadinimu. „JavaScript“ neatpažįsta raktinių žodžių PI ir apvalina visus savaime. Išimtis: galite naudoti su sakinys susieti metodų pavadinimus ir ypatybes su „Math“ objektu. Ši technika yra patogi vietos taupymo priemonė, kai turite naudoti keletą matematinių ypatybių ir metodų. Ankstesnį pavyzdį galima parašyti taip

su (Math) {var pi = PI; var pieAreRound = apvalus (pi); įspėjimas (pieAreRound)}

Jūsų pavyzdžiu pateikiamos „JavaScript“ matematikos objekto palaikomos savybės ir metodai.

Matematikos ypatybės

EEulerio nuolatinis
LN2Natūralus logaritmas iš 2
LN10Natūralus logaritmas 10
LOG2E2 bazinis logaritmas e
LOG10EBazinis 10 logaritmų e
PISkaitmeninis PI atitikmuo: 3,14 ir kt.
SQRT1_2Pusės kvadratinė šaknis
SQRT2Kvadratinė šaknis iš 2

Matematikos metodai

absPateikia absoliučią skaičiaus vertę
acosPateikia skaičiaus lankinį kosinusą
asinGrąžina skaičiaus lanko sinusą
įdegisGrąžina skaičiaus lanko liestinę
lubosGrąžina mažiausią skaičių, didesnį arba lygų skaičiui
cosPateikia skaičiaus kosinusą
galiojimo laikasGrąžina e (Eulerio konstantą) į skaičiaus galią
grindisPateikia didžiausią sveiką skaičių, mažesnį arba lygų jo argumentui
žurnalasPateikia skaičiaus natūralųjį logaritmą (pagrindą e)
maksPateikia didesnę iš dviejų reikšmių
minPateikia mažesnę iš dviejų reikšmių
PowGrąžina skaičiaus vertę, nurodytą nurodytą galią
atsitiktinisPateikia atsitiktinį skaičių (tik X platformose)
apvalusPateikia skaičių, suapvalintą iki artimiausios visos vertės
nuodėmėGrąžina skaičiaus sinusą
kvrtGrąžina skaičiaus kvadratinę šaknį
įdegisGrąžina skaičiaus liestinę

Prašoma „JavaScript“ datos

Taip pat „Java“ pasiskolino objektą „Data“, kurį naudojant „JavaScript“ galima nustatyti dabartinį laiką ir datą. Populiari „JavaScript“ objekto Data programa rodo skaitmeninį laikrodį teksto laukelyje. Scenarijus naudoja objektą Data atnaujinti laikrodį kartą per sekundę. Datos matematikai atlikti taip pat naudojate objektą Data. Pavyzdžiui, scenarijus gali nustatyti dienų skaičių nuo dabar iki tam tikros ateities datos. Tai galite naudoti norėdami parodyti „atgalinį atsiskaitymą“, pvz., Dienų, likusių nuo jūsų įmonės didžiojo pardavimo, skaičių.

„JavaScript“ objektą „Data“ traktuoja kaip konstruktoriaus klasę. Norėdami naudoti datą, turite sukurti naują objekto Data datą; tada galite naudoti įvairius datos metodus, kad gautumėte ir nustatytumėte datas. (Data objekte nėra jokių ypatybių.) Jei esate susipažinę su „Java“ klase „Date“, objekto „JavaScript Date“ ypatybės iš esmės sutampa. Dažniausiai naudojami metodai gauti metodus, kurie objekte Data gauna vertės laiką ir datą. Šie metodai yra:

  • getHours () - grąžina valandą
  • getMinutes () - pateikia minutes
  • getSeconds () - pateikia sekundes
  • getYear () - pateikia metus („96“ yra 1996 m.)
  • getMonth () - pateikia mėnesį („0“ yra sausio mėn.)
  • getDate () - pateikia mėnesio dieną
  • getDay () - pateikia savaitės dieną („0“ yra sekmadienis)

(„JavaScript“ datos objekte taip pat numatyta nustatyti objekto Data laiką ir datą, tačiau jie naudojami retai.)

Naujo objekto data gali būti kelių formų. Norėdami grąžinti objektą, kuriame yra dabartinė data ir laikas, naudokite objektą Data be parametrų. Toliau date_obj yra naujas objektas, kuriame yra dabartinės datos ir laiko vertė, nustatyta kompiuterio sistemos laikrodyje.

var date_obj = nauja data ();

Arba galite nurodyti nurodytą datą ir laiką kaip datos konstruktoriaus dalį. Bet kuris iš šių būdų yra leidžiamas - abu nustatė naują datos objektą 1997 m. Sausio 1 d., Vidurnaktį vietos laiku.

var date_obj = nauja data ("1997 m. sausio 1 d. 00:00:00")

ir

var date_obj = nauja data (97, 0, 1, 12, 0, 0)

Norėdami naudoti datos metodą, pridėkite metodą prie anksčiau sukurto datos objekto. Pvz., Norėdami grąžinti einamuosius metus, naudokite:

var dabar = nauja data (); var yearNow = dabar.getYear ();

Jūsų pavyzdžiu yra šie „JavaScript“ datos objekto palaikomi metodai.