Atviras
Uždaryti

Kur sugeneruojamas duomenų js objektas. Kaip pasiekti ir apdoroti įdėtus objektus, masyvus arba JSON? Ką daryti, jei duomenų struktūros „gylis“ man nežinomas

„JavaScript“ yra trijų tipų objektai: integruoti objektai, naršyklės objektai ir objektai, kuriuos programuotojas sukuria pats (2.1 pav.).

Ryžiai. 2.1. Objektai JavaScript

Kiekvienas iš šių tipų turi savo paskirtį ir savo ypatybes.

Įmontuoti objektai

Žemiau išvardijome įtaisytuosius objektus, kurių savybės ir metodai pasiekiami JavaScript scenarijuose, prieš tai neapibrėžus šių objektų:

Čia * žymi integruotus objektus, apibrėžtus Microsoft JScript 3.0 versijoje. Ši versija įdiegta „Microsoft Internet Explorer“ naršyklės 4.0 versijoje.

Integruoti objektai labai patogu atlikti įvairias operacijas su eilutėmis, kalendoriaus datomis, masyvais, skaičiais ir pan. Jie atleidžia programuotoją nuo įvairių įprastų operacijų, tokių kaip eilučių konvertavimas ar matematinių funkcijų skaičiavimas.

Kaip dirbti su įmontuotais objektais?

Pakankamai paprasta. Programa sukuria objektų egzempliorius ir tada pasiekia objektų savybes ir metodus.

Kaip praktinį pavyzdį apsvarstykite HTML dokumentą, kuriame rodoma dabartinė data ir laikas. Šio dokumento šaltinio tekstą galite rasti 2.1 sąraše.

Sąrašas 2.1. Failas Chapter2/data/data.html

Rodyti datą ir laiką Rodyti datą ir laiką

Čia JavaScript scenarijus sukuria duomenų objektą naudodamas naują raktinį žodį, žinomą visiems C++ gerbėjams, ir datos konstruktorių be parametrų:

var dt; dt = new Data();

Tokiu būdu sukurtas duomenų objektas inicijuojamas pagal vartotojo dabartinę vietinę datą (ne žiniatinklio serverį, iš kurio buvo atsiųstas atitinkamas HTML dokumentas).

Ši eilutė sukuria datos teksto eilutę:

szDate = "Data: " + dt.getDate() + "." + dt.getMonth() + "." +dt.getYear();

Kalendoriaus datos, mėnesio skaičiaus ir metų skaičiaus reikšmė čia gaunama atitinkamai naudojant getDate, getMonth ir getYear metodus. Šie metodai iškviečiami dt objekte, kuriame yra dabartinė data.

Datos teksto eilutė išvedama į HTML dokumentą naudojant dokumento objekte apibrėžtą rašymo metodą:

document.write(szDate);

Šį metodą jau naudojome pirmajame mūsų knygos skyriuje pateiktuose scenarijų pavyzdžiuose.

Atkreipkite dėmesį, kad Date objekte taip pat yra informacijos apie dabartinį laiką. Ši informacija gaunama rodyti naudojant getHours, getMinutes ir getSeconds metodus (atitinkamai valandas, minutes ir sekundes):

document.write("Laikas: " + dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds());

HTML dokumento išvaizda peržiūrint „Microsoft Internet Explorer 4.0“ versijos naršyklės lange parodyta pav. 2.2.

Ryžiai. 2.2. Peržiūrėkite vietinę datą ir laiką

Kitų įmontuotų objektų naudojimą pademonstruosime vėliau, studijuodami medžiagą.

Naršyklės objektai

„JavaScript“ požiūriu naršyklė atrodo kaip hierarchiškai organizuota objektų kolekcija. Pasiekę šių objektų savybes ir metodus, galite atlikti įvairias operacijas su naršyklės lange, į šį langą įkeltu HTML dokumentu, taip pat su atskirais objektais, patalpintais į HTML dokumentą. Pavyzdžiui, galite kurti naujus naršyklės langus įkeldami į juos HTML dokumentus, dinamiškai generuoti HTML dokumento tekstą, pasiekti HTML dokumente apibrėžtus formos laukus ir pan.

Naršyklės objektai yra sąsaja, per kurią JavaScript sąveikauja su vartotoju ir naršyklės lange įkeltu HTML dokumentu, taip pat su pačia naršykle. „JavaScript“ negalite kurti naujų klasių pagal klases, atitinkančias šiuos objektus, tačiau naršyklės objektų savybės ir metodai yra jums prieinami.

Naršyklės objektų hierarchija

Naršyklės objektų hierarchija schematiškai parodyta fig. 2.2.

Ryžiai. 2.2. Naršyklės objektų hierarchija

Lango objektas yra hierarchijos šaknyje. Kai HTML dokumentas įkeliamas į naršyklės langą, tame objekte sukuriami kiti objektai – dokumentas, pirminis, rėmelis, vieta ir viršus.

Jei į naršyklės langą įkeliamas HTML dokumentas su rėmeliais, kiekvienam rėmeliui sukuriamas atskiras langas, o šis langas sukuriamas kaip lango objektas.

Dokumento objekte yra kitų objektų, kurių sudėtį visiškai lemia į naršyklės langą įkeltas HTML dokumentas. Tai gali būti formos, nuorodos į kitus HTML dokumentus arba vietinės nuorodos tame pačiame dokumente, objektai, apibrėžiantys dokumento URL ir pan.

Jei dokumente yra formų, jos taip pat pateikiamos kaip hierarchinis objektų rinkinys. Formos objekte gali būti tokių objektų kaip mygtukai, jungikliai ir laukai, skirti įvesti teksto informaciją.

Pasiekdamas aukščiau išvardytų objektų ypatybes, „JavaScript“ scenarijus gali nustatyti įvairias HTML dokumento savybes, pvz., pavadinimą. Jis turi prieigą prie visų nuorodų, esančių dokumente, taip pat prie HTML dokumente apibrėžtų formos laukų turinio.

Įvykiai, susiję su objektais

Pažymėkime dar vieną labai svarbią pastabą dėl naršyklės objektų.

Kiekvienas toks objektas yra susietas su konkrečiu įvykių rinkiniu, kurį galima apdoroti JavaScript scenarijuje.

Pavyzdžiui, įvykiai onLoad ir onUnload yra susieti su lango objektu. Pirmasis iš šių įvykių įvyksta, kai naršyklė baigia įkelti langą ir visus jame esančius rėmelius (jei tie rėmeliai yra apibrėžti lange). Antrasis įvykis įvyksta, kai vartotojas baigia dokumentą uždarydamas naršyklės langą arba perjungdamas į kitą dokumentą.

Pavyzdžiui, „JavaScript“ scenarijus gali parodyti pasveikinimo pranešimą vartotojui arba paraginti pateikti papildomos informacijos, kai tvarkomas „onLoad“ įvykis. Kai langas uždaromas (kai iškeliamas įvykis onUnload), scenarijus gali išleisti visus su tuo langu susijusius išteklius arba parodyti pranešimą monitoriaus ekrane.

Įvykiai taip pat susieti su kitais naršyklės objektais. Apie juos kalbėsime aprašydami šiuos objektus.

Objektai, pagrįsti programuotojo sukurtomis klasėmis

Daugybė knygų pradedantiesiems apie C++ programavimo kalbą siūlo įsivaizduoti klasę kaip duomenų struktūrą, kurioje, be įprastų laukų, apibrėžiami darbo su šiais duomenimis funkcijų metodai. Taigi „JavaScript“ kalboje kurdami savo klases naudojamas visiškai priešingas metodas.

JavaScript klasė sukuriama kaip funkcija, apibrėžianti ypatybes, kurios veikia kaip duomenys. Kalbant apie metodus, jie taip pat apibrėžiami kaip funkcijos, bet atskirai.

Pateiksime konkretų pavyzdį.

Tarkime, kad turime sukurti klasę, kurioje būtų įsivaizduojamas telefono duomenų bazės įrašas. Šioje klasėje turime pateikti ypatybes, skirtas saugoti vardą, pavardę, telefono numerį, adresą, taip pat specialų atributą įrašams, kurie yra apsaugoti nuo neteisėtos prieigos. Be to, būtina sukurti metodus, skirtus objekto turiniui rodyti lentelės pavidalu, kaip parodyta Fig. 2.3.

Ryžiai. 2.3. Pranešimų turinio peržiūra

Pirmiausia sukurkime savo klasę myRecord. Galbūt dar nėra jokių metodų, juos pridėsime vėliau.

Reikiama klasė sukuriama taip:

function myRecord(vardas, šeima, telefonas, adresas) ( this.name = vardas; this.family = šeima; this.phone = telefonas; this.address = adresas; this.secure = false; )

Nesunku suprasti, kad mūsų klasės aprašymas yra ne kas kita, kaip konstruktoriaus funkcija. Konstruktoriaus parametrai skirti objekto savybėms nustatyti, kai jis sukuriamas pagal klasę.

Savybės apibrėžiamos paprastomis nuorodomis į jų pavadinimus, po kurių nurodomas šis raktinis žodis. Šis raktinis žodis čia rodo, kad sakinys nurodo objekto, kuriam iškviečiamas konstruktorius, ty kuriamo objekto, savybes.

Atkreipkite dėmesį, kad mūsų konstruktorius inicijuoja nuosavybę, vadinamą saugia, į klaidingą. Atitinkamas parametras konstruktoriuje nepateiktas, o tai yra gana priimtina.

Kaip naudoti konkrečią klasę?

Remdamiesi šia klase, galite sukurti bet kokį objektų skaičių. Žemiau pateikėme „JavaScript“ scenarijaus fragmentą, kuriame pagal „myRecord“ klasę sukuriami du objektai rec1 ir rec2:

var rec1; var rec2; rec1 = naujas myRecord("Ivanas", "Ivanovas", "000-322-223", "Malaya Bolshaya g., 225, apt. 226"); rec2 = naujas myRecord("Petras", "Petrov", "001-223-3334", "Bolshaya Malaya g., 552, apt. 662"); rec2.secure = tiesa;

Objektai kuriami naudojant naują operatorių, žinomą tiems, kurie rašo programas C++ ir Java kalbomis. Čia mes perduodame parametrus konstruktoriui, kad inicijuotų sukurtų objektų savybes.

Kalbant apie nuosavybę, pavadintą saugia, rec2 objekte ji inicijuojama po to, kai pastarasis yra sukurtas. Jame parašyta vertė true. Mes nepakeitėme rec1 objekto saugios savybės, todėl ji saugoma kaip klaidinga.

Dabar mūsų užduotis yra pridėti naujus metodus, pavadintus printTableHead, printTableEnd ir printRecord prie mūsų apibrėžtos klasės. Pirmieji du iš šių metodų išveda į HTML dokumentą atitinkamai lentelės pradžios ir pabaigos fragmentus, o trečiasis – lentelės eilutes, atspindinčias įrašų turinį.

Žemiau pateikiamas naujas myRecord klasės apibrėžimas:

funkcija printTableHead() ( . . . ) function printTableEnd() ( . . . ) function printRecord() (... ; this.phone = telefonas; tai.secure = false.

Čia, prieš konstruktoriaus apibrėžimą, mes pateikėme savo klasės funkcijų metodų apibrėžimus. Be to, į konstruktorių įtrauktas naujų savybių apibrėžimas:

this.printRecord = printRecord; this.printTableHead = printTableHead; this.printTableEnd = printTableEnd;

Kai klasė apibrėžiama tokiu būdu, galite kurti objektus ir iškviesti konkrečius metodus:

rec1.printTableHead(); rec1.printRecord(); rec1.printTableEnd(); rec2.printTableHead(); rec2.printRecord(); rec2.printTableEnd();

Grįžtant prie dokumento, parodyto aukščiau pav. 2.3, pateikiame visą šaltinio tekstą (2.2 sąrašas).

Sąrašas 2.2. Failas Chapter2/NewObject/NewObject.html

Peržiūrėti įrašus Peržiūrėti įrašus

Kaip įprasta, HTML dokumento antraštės srityje patalpinome naujos klasės myRecord apibrėžimą ir jos metodus.

PrintTableHead metodas spausdina lentelės antraštę HTML dokumente. Šios antraštės išvaizda priklauso nuo objekto savybių turinio.

Pirma, metodas printTableHead patikrina saugią nuosavybę ir gauna jos vertę naudojant šį raktinį žodį:

var szSec = ""; if(this.secure) szSec = " (Saugus)"; else szSec = " (Nesaugus)".fontcolor("raudona");

Čia šis raktinis žodis reiškia, kad būtina naudoti objekto, kuriam buvo iškviestas printTableHead metodas, savybę.

Jei saugios ypatybės turinys teisingas, į teksto kintamąjį szSec įrašoma eilutė "(Secure)". Jei ji klaidinga, į šį kintamąjį įrašoma eilutė "(Nesaugus)", o eilutės spalva nustatoma į raudoną.

Kadangi „JavaScript“ programoje visos teksto eilutės (įskaitant literalius) yra įtaisytosios String klasės objektai, galite iškviesti joms šioje klasėje apibrėžtus metodus. Visų pirma, šrifto spalvos metodas leidžia nustatyti linijos spalvą, kurią mes naudojome.

Tada metodas printTableHead išveda teiginį į HTML dokumentą

su parametru BORDER, kuris pradeda lentelės, turinčios kraštinę, apibrėžimą. Užrašas virš lentelės nurodomas naudojant dinamiškai sugeneruotą operatorių. Ši etiketė apima vardą ir pavardę, gautą iš atitinkamų objekto, kuriame buvo iškviestas printTableHead metodas, ypatybių. Šis metodas rodo lentelės stulpelių etiketes.

Metodas printTableEnd spausdina teiginį į HTML dokumentą

, užbaigiantis lentelės apibrėžimą, taip pat tuščią pastraipą, skirtą atskirti lenteles, einančiomis viena po kitos:

funkcija printTableEnd() ( document.write(""); document.write("

"); }

Paskutinis mūsų klasėje apibrėžtas metodas vadinamas printRecord. Ji išspausdina pirmųjų keturių objekto savybių turinį kaip eilutę iš lentelės, kurią HTML dokumente apibrėžė ką tik aprašyta funkcija printTableHead.

Atkreipkite dėmesį, kad objekto savybių turinys spausdinamas kursyvu, kurį vadiname kursyvu:

document.write(" Vardas:" + šis.vardas.kursyvas() + "");

MyRecord klasės apibrėžimą jau aprašėme aukščiau.

Dabar pereikime prie antrosios scenarijaus dalies, esančios HTML dokumento turinyje.

Čia sukuriame du objektus rec1 ir rec2 pagal „myRecord“ klasę, o tada nustatome rec2 objekto saugią ypatybę į „true“.

Kaip matote, mūsų klasės naudojimas labai supaprastino įrašų turinio inicijavimą ir atvaizdavimą įsivaizduojamoje telefonų duomenų bazėje. Tiesą sakant, šią užduotį sumažinome iki kelių metodų, iš anksto nustatytų mūsų klasėje.

Šiame skyriuje:

„JavaScript“ turi keletą iš anksto nustatytų objektų, kuriuos galite naudoti rašydami scenarijus. Tai apima tokius objektus kaip masyvas, loginis dydis, data, funkcija, matematika, skaičius, regExp ir eilutė, taip pat primityvus objektas Objektas. Ankstesnėse kalbos versijose dokumento objektai (langas, dokumentas) taip pat buvo įtraukti į ją, tačiau dabar jie neįtraukti į JavaScript kalbos pagrindą ir priklauso dokumento objekto modelio (DOM) apibrėžimui, kuris bus aptarta vėliau. Tačiau kai kurios šių objektų savybės (dokumentas ir langas) mums jau žinomos.

Tačiau grįžkime prie integruotų „JavaScript“ objektų šiuolaikinėje koncepcijoje. Visi integruoti objektai, išskyrus matematiką ir datą, turi tokias savybes kaip konstruktorius ir prototipas. Jie naudojami naujoms savybėms pridėti prie esamų objektų ir aprašomi funkcijos objekto kontekste.

Objektas

Visi JavaScript objektai yra objekto objekto palikuonys. Todėl visos šio objekto savybės ir metodai galimi ir bet kuriam kitam JavaScript objektui.

Objekto objektui nustatytos tik 2 savybės – konstruktorius ir prototipas. Konstruktoriaus ypatybė apibrėžia funkciją, kuri sukuria objekto prototipą – visą funkciją, o ne tik pavadinimą. Kitaip tariant, apsvarstykite parinktį, kai apibrėžiamas koks nors bandomasis objektas ir sukuriamas šio tmp objekto egzempliorius:

Funkcijų testas(versija) ( this.version = version; ) tmp = new test(1);

Tokiu atveju, naudojant konstruktoriaus ypatybę, galite pamatyti bandomojo objekto šaltinio kodą (4.6 pav.):

Alert(tmp.constructor);

Ryžiai. 4.6.

Tačiau ši savybė turi vieną apribojimą: ji negali spausdinti įtaisytųjų JavaScript objektų kodo: tokiais atvejais išvesties informacija apsiriboja prototipo funkcijos pavadinimu ir eilute "".

Kalbant apie prototipo nuosavybę, tai leidžia pasiekti dabartinio objekto prototipo funkciją. Naudojant šią savybę galima pakeisti objekto prototipo charakteristikas. Pavyzdžiui, galite pridėti naują testo tipo objekto ypatybę naudodami prototipo ypatybę:

Test.prototype.comment = "Nauja komentaro savybė";

Dabar visi tipo testo objektai, įskaitant jau sukurtą tmp egzempliorių, turės komentaro ypatybę, kurią lengva patikrinti taikant šį patikrinimą:

Alert(tmp.comment);

Be to, panašiu būdu galima modernizuoti įmontuotus JavaScript objektus. Pavyzdžiui, jei prie masyvų reikia pridėti ypatybę, pvz., aprašymą, tai galime padaryti (žinoma, tik pagal dabartinį scenarijų!) nurodydami masyvo objekto prototipą ir pridėdami prie jo atitinkamą ypatybę:

Array.prototype.description = "";

Kalbant apie metodus, objekto objektui jų apibrėžta šiek tiek daugiau – net 5 iš jų. Tai yra toSource, toString, watch, unwatch ir valueOf, trumpas jų aprašymas pateiktas 4.10 lentelėje.

Metodai toString ir valueOf taikomi beveik visiems įtaisytiesiems „JavaScript“ objektams ir paprastai juos automatiškai iškviečia vertėjas, kai reikia konvertuoti. Kalbant apie metodą toSource, jis iš tikrųjų atlieka tik konstruktoriaus nuosavybės darbą.

Likę žiūrėjimo ir nežiūrėjimo metodai, patentuoti plėtiniai, įdiegti „Netscape 4“ naršyklėje (dabar taip pat palaikoma „Mozilla“), yra skirti scenarijų derinimui. Kadangi šiame leidinyje programos derinimo klausimas nebus svarstomas, nėra prasmės aprašyti šių metodų. Bet tik tuo atveju galite atkreipti dėmesį, kad „Sea Monkey“ (bet ne „Firefox“ naršyklė) turi scenarijų derintuvą – „JavaScript Debugger“.

Masyvo objektas

Masyvo kintamieji turi sutvarkytus reikšmių rinkinius, kurie patogumo dėlei pateikiami kaip vienas kintamasis. Mes jau ne kartą susidūrėme su masyvais (tik atsiminkite argumentų masyvus), dabar laikas suprasti visas jų savybes ir taikymo subtilybes.

Skirtingai nuo kitų programavimo kalbų, JavaScript neturi masyvo duomenų tipo. Tačiau šis apribojimas įveikiamas dėl to, kad galite naudoti iš anksto nustatytą masyvo objektą - Array. Norėdami sukurti masyvo objektą, galite naudoti vieną iš šių sintaksių:

MasyvoPavadinimas = naujas Masyvas(elementas1, elementas2, ... elementasN) MasyvoPavadinimas = naujas Masyvas(Masyvo ilgis)

Pirmuoju atveju pateikiami visi masyvo komponentai, antruoju tiesiog nurodomas elementų skaičius. Deklaruojant masyvą taip pat galima naudoti pažodinius žodžius:

Kompiuteriai = ["PC", "Mac", "Saulė"];

Norėdami užpildyti masyvo elementus reikšmėmis, taip pat pasiekti masyvo elementus apskritai, galite naudoti elementų indeksą. Reikėtų atsižvelgti į tai, kad masyvo elementų indeksas prasideda nuo nulio:

Variantos spalvos = naujas Masyvas(3); spalvos = "Raudona"; spalvos = "mėlyna"; spalvos = "Žalia";

Gana dažnai patogu naudoti JavaScript kalbos teikiamą galimybę tiesiogiai užpildyti masyvą deklaruojant:

Variančios spalvos = naujas Masyvas ("Raudona", "Mėlyna", "Žalia");

Norėdami sužinoti masyvo ilgį (masyvą sudarančių elementų skaičių), turėtumėte naudoti ilgio savybę:

Var NumColors = spalvos.ilgis;

Be ilgio savybės, „JavaScript“ taip pat suteikia daugybę kitų savybių ir metodų, skirtų darbui su masyvais. Visų pirma, masyvo objekto savybės, be ilgio, apima konstruktorių ir prototipą, kurie yra universalūs visiems objektams, taip pat indekso ir įvesties ypatybės, skirtos naudoti masyvus kartu su reguliariosiomis išraiškomis.

Kalbant apie metodus, be standartinių toSource, toString ir valueOf, masyvuose yra dar keliolika savų, išvardytų 4.11 lentelėje.

4.11 lentelė. Masyvo objekto metodai Metodo aprašymas
concatSujungia du masyvus ir grąžina naują
prisijungtiSujungia visus masyvo elementus į vieną eilutę
popPašalina paskutinį elementą iš masyvo ir grąžina jį
stumtiPrideda vieną ar daugiau elementų prie masyvo pabaigos ir grąžina naują ilgį
atvirkščiaiPerkelia masyvo elementus taip, kad pirmasis taptų paskutinis ir atvirkščiai
pamainaPašalina pirmąjį masyvo elementą ir grąžina jį
gabalasPašalina dalį masyvo elementų ir grąžina naują masyvą
sandūrąPrideda ir (arba) pašalina elementą iš masyvo
rūšiuotiRūšiuoja masyvo elementus abėcėlės tvarka
perjungtiPrideda vieną ar daugiau elementų prie masyvo pradžios ir grąžina naują masyvo ilgį (MSIE 5.5 ir 6 versijose šis metodas nieko nepateikia)

Pažvelkime į kai kuriuos metodus išsamiau. Taigi, naudodami concat metodą, galite sujungti 2 masyvus viename:

Var a = naujas Masyvas("A1", "A2"); var b = naujas Masyvas("B1", "B2"); var ab = a.concat(b);

Čia kintamasis ab taps masyvu, kuriame yra visi 4 dviejų suklijuotų masyvų elementai. Jei dabar tokiam masyvui pritaikysime prisijungimo metodą, rezultatas bus eilutė, kurioje yra visi šio masyvo elementai, atskirti kableliais:

Str = ab.join(); // gauti str = "A1,A2,B1,B2"

Kalbant apie pop metodą, jei pritaikysime jį tam pačiam masyvui, kaip atsakymą gausime „B2“, o masyvas bus apkarpytas iki trijų pirmųjų reikšmių. Kita vertus, poslinkio metodas grąžina pirmąjį elementą (mūsų atveju „A1“) ir tą patį daro su masyvu, tik skirtumas yra tas, kad likę elementai perkeliami į priekį.

Norėdami geriau suprasti, kaip veikia šie ir kiti masyvo metodai, apsvarstykite šį 4.3 sąrašo pavyzdį.

Sąrašas 4.3. Darbas su masyvais

Tą patį pavyzdį galima peržiūrėti faile masyvas.html, tuo pačiu galite peržiūrėti visus jo darbo rezultatus naršyklėje (žr. 4.7 pav.).

Ryžiai. 4.7. Sujungimo metodo naudojimo rezultatas: grąžintas masyvas ir pakeitimai

Masyvai gali būti ir daugiamačiai, t.y. masyvo elementas gali būti kitas masyvas. Šiuo atveju, norėdami pasiekti masyvo elementą, naudokite šią sintaksę:

Array2D="Elementas 0,0" Array2D="Elementas 0,1" ... Array2D[N][N]="Elementas N,N"

Dvimačio masyvo užpildymo ir išvedimo pavyzdį galima rasti faile arrays.html, taip pat yra interaktyvus pavyzdys beveik visiems masyvo metodams.

Būlio objektas

Būlio objektas yra to paties pavadinimo duomenų tipo įpakavimas. Norėdami apibrėžti Būlio tipo objektą, naudokite šią sintaksę:

BooleanObj = nauja Būlio reikšmė (reikšmė)

Čia reikšmė yra inicijavimo išraiška, kuri, jei reikia, bus pakeista į teisingą arba klaidingą. Jei nurodysite reikšmę, pvz., 0, null, false, NaN, undefined arba tuščią eilutę, Būlio objekto inicijavimo rezultatas bus klaidingas, o bet kurios kitos reikšmės atveju rezultatas bus teisingas.

Primityvios loginės reikšmės true ir false neturėtų būti painiojamos su tikrosios ir klaidingos Būlio objekto duomenų tipais. Pavyzdžiui, jei deklaruosite kintamąjį x ir priskirsite jam Būlio objekto vertę, inicijuotą į false, lyginant jis vis tiek bus įvertintas kaip true:

X = naujas Būlio reikšmė (klaidinga); // lyginant jei (x) gauname tiesa

Tuo pačiu metu, jei kintamajam tiesiog priskirsite primityvų duomenų tipą false, jis gaus būtent tai:

X = klaidinga; // lyginant jei (x) gauname false

Kalbant apie praktinį šio objekto naudojimą, jis gali būti naudojamas kaip funkcija konvertuoti bet kokių kitų tipų reikšmes į Būlio:

A = 100; x = Būlio vertė (a); // x bus teisingas, jei (x) (...)

Bet iš tikrųjų vargu ar tai padarysite, nes prireikus tokias transformacijas automatiškai atlieka „JavaScript“ interpretatorius - aukščiau esančiame pavyzdyje galite iš karto parašyti „jei (a) ...“ ir reikalinga transformacija. šiuo atveju bus daroma bet kuriuo atveju .

Datos objektas

„JavaScript“ nepateikia specialaus duomenų tipo darbui su datomis, tačiau, kaip ir masyvuose, yra specialus duomenų objektas. Norėdami sukurti datos objektą, galite naudoti bet kurį iš šių metodų:

Nauja data() nauja data(milisekundėmis) nauja data("Data_as_string")

Pirmuoju atveju datos objektas sukuriamas su dabartiniu laiku, antruoju turėtų būti nurodytas milisekundžių skaičius, praėjęs nuo 1970 m. sausio 1 d. Jei data nurodyta kaip eilutė, ji turi būti „2005 m. vasario 28 d.“ formos. Taip pat galima nustatyti datą naudojant sveikųjų metų, mėnesio, dienos ir tt reikšmes:

Nauja data (metai, mėnuo, diena [, valanda, minutė, sekundė, milisekundė])

Žinoma, tokiu atveju galite nenurodyti sekundžių ir milisekundžių, juolab kad milisekundės net nebuvo palaikomos senesnėse naršyklių versijose. Be to, JavaScript, senesnė nei 1.3 versija, nepalaiko datos, senesnės nei 1970 m. sausio 1 d. Kalbant apie eilutėje nurodytų reikšmių formatą, metai yra bet koks 4 skaitmenų skaičius (jei nurodysite 2 skaitmenų skaičių, tada prie jo bus pridėta 1900), mėnesio skaičius yra nuo 0 ( sausio) iki 11 (gruodžio mėn.), o diena yra nuo 0 iki 31. Atitinkamai laiko reikšmės taip pat ribojamos: valandoms jis bus sveikas skaičius nuo 0 iki 23, sekundėms ir minutėms - nuo 0 iki 59 ir milisekundėms - nuo 0 iki 999. Taigi, kad kaip objekto reikšmę Datos tipas nurodytumėte 2005 m. gegužės 9 d., turėtumėte parašyti:

Var anyday = new Data(2005, 5, 9);

Ir jei jums reikia gauti dabartinę datos ir laiko reikšmę, tada nereikia jokių parametrų:

Var now = new Data();

Nuo JavaScript 1.3, dienų seka gali būti iki 100 milijonų dienų iki ir po 1970-01-01 (tai iš viso yra beveik 550 tūkstančių metų!). Toje pačioje versijoje buvo reikalavimas metus visada nurodyti keturženkliu formatu, kad būtų išvengta klaidų, susijusių su amžių kaita.

Norėdami dirbti su Date objektu, yra 2 savybės - konstruktorius ir prototipas, taip pat daugybė metodų, leidžiančių pasirinkti norimą datos dalį (metus, mėnesį, dieną, laiką), rodyti ją vienu ar kitu formatu, ir tt Visi jie išvardyti 4.12 lentelėje.

4.12 lentelė. Datos objekto metodai Metodas ir jo sintaksė Aprašymas
getDate ()Grąžina mėnesio dieną vietos laiku
getDay ()Grąžina savaitės dieną vietos laiku
gautiFullYear()Grąžina metus vietos laiku
getHours ()Grąžina dabartinį laiką (valandomis) vietos laiku
get Milliseconds ()Grąžina dabartinį laiką (milisekundėmis) vietos laiku
getMinutes ()Grąžina dabartinį laiką (minutėmis) vietos laiku
gauti mėnesį ()Grąžina dabartinį laiką (mėnesį) vietos laiku
getSeconds ()Grąžina dabartinį laiką (sekundėmis) vietos laiku
getTime ()Grąžina esamą laiką kaip kiekį vietos laiku
getTimezoneOffset()Grąžina laiko nuokrypį minutėmis, palyginti su GMT vietos laiku
gautiUTCDate()Grąžina mėnesio dieną pasauliniu laiku
gautiUTCDay()Grąžina savaitės dieną pasauliniu laiku
gautiUTCFullYear()Grąžina metus pasauliniu laiku
gautiUTCHours()Grąžina esamą laiką (valandomis) pasauliniu laiku
gautiUTCMiliseconds()Grąžina esamą laiką (milisekundėmis) pasauliniu laiku
gautiUTCMutes()Grąžina dabartinį laiką (minutėmis) universaliu laiku
gautiUTCMonth()Grąžina dabartinį laiką (mėnesį) pasauliniu laiku
gautiUTCSeconds()Grąžina esamą laiką (sekundėmis) pasauliniu laiku
getYear ()Pasenusi. Pateikia metus trumpu (dviejų skaitmenų) universaliojo laiko formatu
analizuoti(datos_eilutė)Grąžina milisekundžių skaičių, praėjusį nuo 1970 m. sausio 1 d. iki parametre nurodytos reikšmės vietos laiku
nustatyti data (diena)Vietos laiku nustato mėnesio dieną
nustatytiFullYear (metai)Nustato metus vietos laiku
setHours (valandos)Nustato laiką (valandas) vietos laiku
setMilliseconds (milisekundės)Nustato laiką (milisekundėmis) vietos laiku
nustatyti minutes (minutės)Nustato laiką (minutėmis) vietos laiku
nustatyti mėnesį (mėnuo)Nustato laiką (mėnesį) vietos laiku
setSeconds (sekundės)Nustato laiką (sekundėmis) vietos laiku
setTime (milisekundėmis)Nustato laiką milisekundėmis konkrečiai datai vietos laiku
setUTCDate(day)Nustato mėnesio dieną pasauliniu laiku
setUTCFullYear (metai)Nustato metus pasauliniu laiku
nustatytiUTCHours (valandos)Nustato laiką (valandas) pasauliniu laiku
Nustatyti UTCMiliseconds (milisekundės)Nustato laiką (milisekundėmis) pasauliniu laiku
setUTCMutes (minutės)Nustato laiką (minutėmis) universaliu laiku
nustatyti UTCMėnuo(mėnuo)Nustato laiką (mėnesį) pasauliniu laiku
setUTCSeconds (sekundės)Nustato laiką (sekundėmis) pasauliniu laiku
setYear (metai)Pasenusi. Nustato metus vietos laiku, dviejų skaitmenų formatas yra priimtinas metų vertei
toGMTString()Pasenusi. Konvertuoja datą į eilutę, atitinkančią GMT laiką
toLocaleString()Grąžina datą ir laiką kaip eilutę, atitinkančią vietinių sistemos nustatymų formatą
toLocaleDateString()Grąžina datą kaip eilutę, atitinkančią vietinės sistemos nustatymų formatą
toLocaleTimeString()Grąžina laiką kaip eilutę, suformatuotą pagal vietinius sistemos nustatymus
į šaltinį()Grąžina datos objektą pažodžiui
toString()Grąžina datos objektą eilutės vaizde
toUTCSstring()Konvertuoja datą į eilutę universalaus laiko formatu
UTC (parametrai)Pateikia milisekundžių skaičių, prabėgusią nuo 1970 m. sausio 1 d., pasauliniu laiku. Parametrai nurodo metus, mėnesį ir dieną, taip pat (pasirinktinai) valandas, minutes, sekundes ir milisekundes
vertė()Grąžina datą kaip primityvią reikšmę

Nepaisant tokios metodų gausos, dirbti su Date objektu yra gana paprasta: tereikia suprasti metodų įvardijimo principą:

  • metodai, prasidedantys raide „set“, skirti datos ir laiko nustatymui Date objektuose;
  • metodai, prasidedantys raide „get“, skirti datos, laiko ar jų dalių iškvietimui iš datos objektų;
  • metodai, prasidedantys raide „to“, grąžina datą ir laiką (arba jų dalis) kaip eilutės reikšmes;
  • metodai, kuriuose yra „UTC“, skiriasi nuo panašių tik tuo, kad jie veikia su universalaus laiko formatu (t. y. rodo Grinvičo laiką, atsižvelgiant į poslinkį, palyginti su dabartine laiko juosta).

Taigi, belieka pridėti, kad gautumėte arba nustatytumėte reikiamos datos ar laiko dalies pavadinimą, kad gautumėte arba nustatytumėte norimą parametrą, jei reikia, taip pat naudojant UTC. Na, o kai jums reikia gauti rezultatą „žmogaus“ forma, naudokite metodus iki. Taip pat turėtumėte atsiminti, kad norėdami dirbti su metais, visada turėtumėte naudoti tik viso formato funkcijas (t. y. getFullYear arba getUTCFullYear, o ne getYear).

Datos eilutės atvaizdavimas JavaScript yra toks:

Savaitės diena Mėnuo Data Metai Valandos:Minutės:sekundės GMT±Poslinkis

Norėdami aiškiai matyti datų vaizdavimą ir tuo pačiu metu apsvarstyti, kaip veikia tokios funkcijos kaip toString, pažiūrėkime, ką jos pateikia kaip išvestį. Tokiu atveju pirmas dalykas, kuris gali ateiti į galvą norint peržiūrėti tam tikros funkcijos veikimą, yra naudoti teksto išvestį į dokumentą:

Document.writeln(DataObject.toString()); document.writeln(DataObject.toGMTString()); // ir tt

Bet iš tikrųjų, kadangi funkcijų yra daug, būtų gerai iš anksto parašyti, koks veiksmas buvo atliktas:

Document.writeln("DataObject.toString()" + DateObject.toString());

Dabar dar kartą pagalvokime, kiek eilučių iš tikrųjų norime išvesti tokiu būdu. Net jei manote, kad kopijavimo ir įklijavimo metodą palaiko visi teksto rengyklės, tai neapsaugos nuo tokių klaidų:

Document.writeln("DataObject.toLocaleString()" + DateObject.toString());

Tačiau, kaip sako IBM šūkis, žmonės turėtų galvoti, o mašinos turėtų veikti. Taigi pagalvokime, kaip priversti kompiuterį veikti, tuo pačiu taupydami save nuo būtinybės įvesti papildomų kodo baitų, dėl kurių kreipiamės į 4.4 sąrašą.

Sąrašas 4.4. Skirtingų datų tipų ir įvertinimo funkcijos išvedimas

Datos objekto metodai

Visų pirma, ji apibrėžia printDate funkciją, kuri iš tikrųjų viena ar kita forma rodo datą dokumente. Tiksliau, mūsų atveju ji rodo datą, bet iš esmės gali išvesti bet ką, jei argumentas, kurį jis priima, yra visas JavaScript kodo dalis. Tokiu atveju kodas pirmiausia rodomas toks, koks yra (t. y. eilutės kintamasis atspausdinamas pradine forma), o tada rodomas vykdymo rezultatas, kuriam naudojama eval funkcija. Dėl to vieną kartą parašę tokią funkciją, vėliau galėsite ja remtis visame dokumente, taip išvengiant poreikio įvesti beveik tą patį tekstą du kartus.

Po išvesties funkcijos sukuriamas Datos tipo objektas, kuriam priskiriama reikšmė 2005, 3 mėnuo (balandžio mėn., nes sausio mėn. yra nulis), 1 diena, 14 valandų, 30 minučių, 45 sekundės. Tada dokumentas atidaromas rašymui ir funkcija printDate iš eilės iškviečiama 6 skirtingus Date objekto metodus. Šio scenarijaus rezultatas bus 6 eilutės, kuriose yra reikšmių poros iš metodo ir jo darbo rezultatas, atskirtos dvitaškiu (4.8 pav.).

Ryžiai. 4.8. Tos pačios datos išvedimas naudojant skirtingus metodus

Pažymėtina, kad toSource metodą, kuris rodo datą vidinėje programos atvaizde, palaiko tik „Mozilla“ naršyklės. Be to, datų rodymo visais kitais būdais formatas skirtingose ​​naršyklėse taip pat gali šiek tiek skirtis. Galite įkelti tokį pavyzdį į įvairias peržiūros programas ir patys pamatyti, ką jos gamina (date.html failą).

Funkcinis objektas

Iš anksto nustatytas funkcijos objektas apibrėžia JavaScript kodo eilutę, kuri turėtų būti vykdoma kaip funkcija. Norėdami deklaruoti funkcijos objektą, naudokite šią sintaksę:

FunctionName = nauja funkcija([argumentas1, argumentas2, ...argumentasN], FunctionBody)

Šiuo atveju kaip funkcijos pavadinimas gali būti naudojamas bet kurio esamo objekto kintamojo arba ypatybės pavadinimas. Taip pat galima nurodyti Function tipo objektą kaip objekto įvykių tvarkyklės reikšmę. Tarkime, jei norime sukurti savo įvykių tvarkyklę, pvz., „dokumento įkėlimas baigtas“ (document.onload), galime parašyti taip:

Document.onload = new Function([Argumentas1, ...argumentasN], FunctionBody);

Argumentai šiuo atveju yra parametrai, perduoti funkcijai, o funkcijos turinys yra tikrasis kodas, kuris turi būti vykdomas pasiekiant šį funkcijos objektą. Pavyzdžiui, galite parašyti šią objekto, kuris bus naudojamas skaičiaus kvadratui, versiją:

Var SquareObj = new Function("x", "return x*x");

Čia SquareObj yra kintamojo pavadinimas, x yra gautas argumentas, o „return x*x“ yra funkcijos turinys. Atkreipkite dėmesį į tai, kad ne tik funkcijos turinys, bet ir argumentai, kuriuos ji priima, yra kabutėse, taip pat į tai, kad objekto tipo pavadinimas, kaip įprasta JavaScript, rašomas didžiosiomis raidėmis (Funkcija) .

Tokiu būdu sukurtų kintamųjų naudojimas yra panašus į bet kurio kito tipo kintamųjų naudojimą:

Var a = 5 + SquareObj(2); // gauk 9

Tiesą sakant, funkcijos tipo objektas visada gali būti vaizduojamas kaip įprasta funkcija, deklaruojama naudojant funkcijos raktinį žodį. Taigi tą patį pakėlimą į antrąją laipsnį galima apibūdinti taip:

Funkcija SquareFunc(x) (grįžta x*x; )

Atitinkamai, tokiu metodu deklaruotą funkciją (šiuo atveju funkciją „gryna“ forma, o ne procedūrą) galite naudoti panašiai:

Var a = 5 + SquareFunc(2); // taip pat gauname 9

Taigi reikšmės priskyrimas kintamajam kaip funkcijai naudojant Function objektą yra tas pats, kas deklaruoti pačią funkciją. Tačiau tuo pačiu metu šie metodai skiriasi: jei SquareObj yra kintamasis, kurio reikšmė yra nuoroda į objektą, sukurtą naudojant Function objektą, tada SquareFunc yra funkcijos pavadinimas. Atitinkamai, jie taip pat skirtingai elgiasi programos vykdymo metu: funkcijos tipo objektui interpretatorius įvertins visą funkcijos kodą kiekvieną kartą, kai susidurs su kintamuoju (mūsų atveju SquareObj), o funkcijoms, deklaruotoms įprastu būdu, kodas vertinamas tik pirmame praėjime Šis skirtumas gali būti nereikšmingas, jei funkcija atlieka vienkartinį darbą, tačiau iš Function objekto sukurtų kintamųjų naudojimas žymiai sumažina programos efektyvumą cikluose. Todėl praktikoje funkcijų objektai naudojami labai retai, tačiau kartais jie gali būti patogūs, pavyzdžiui, pridedant metodus prie kitų objektų.

Funkcijos objektas turi standartinį JavaScript ypatybių konstruktorių ir prototipą, taip pat keletą savo:

Argumentai – masyvas, atitinkantis funkcijos argumentai parametrus.callee – atitinka funkcijos pagrindą. arguments.caller (pasenęs) – nurodo funkcijos, iš kurios buvo iškviestas objektas, pavadinimą; argumentai.ilgis – nurodo funkcijos parametrų skaičių. ilgis – nurodo funkcijos laukiamų argumentų skaičių (o ne gautą skaičių, kaip yra argumento.ilgis atveju);

DĖMESIO
Visos argumentų savybės gali būti matomos tik „iš funkcijos“ ir, pradedant JavaScript 1.4, argumentai nebėra Function objekto savybė, o yra nepriklausomas vietinis kintamasis, netiesiogiai esantis bet kurioje funkcijoje. Tiesą sakant, funkcijai liko tik 1 nuosavybė - ilgis.

Be savybių, funkcijos objektas turi keletą metodų. Taigi taikymo metodas leidžia taikyti vieno objekto metodą kitam, o iškvietimo metodas leidžia iškviesti kito objekto metodą dabartinio objekto kontekste. Deja, šių metodų įgyvendinimas praktiškai palieka daug norimų rezultatų. Taigi belieka paminėti standartinius JavaScript metodus toString, toSource ir valueOf, kurie taip pat galimi ir Function objektui.

Matematikos objektas

Matematika yra integruotas „JavaScript“ objektas, turintis pagrindines matematines konstantas ir funkcijas kaip metodus ir savybes. Pavyzdžiui, objekto Math savybėje PI yra Pi (π) reikšmė, kuri yra maždaug lygi 3,1416, o sin metodas grąžina nurodyto skaičiaus sinusą.

Be skaičiaus π, matematikos objektas turi šias savybes:

  • E – natūraliųjų logaritmų bazė (apie 2,718)
  • LN10 – natūralusis logaritmas 10 (apytiksliai 2,302)
  • LN2 – natūralusis logaritmas 2 (apytiksliai 0,693)
  • LOG10E – dešimtainis E logaritmas (apytiksliai 0,434)
  • LOG2E – dvejetainis E logaritmas (apytiksliai 1,442)
  • SQRT1_2 – kvadratinė šaknis iš 0,5 (apytiksliai 0,707)
  • SQRT2 – kvadratinė šaknis iš 2 (apytiksliai 1,414)

Kadangi visos Math objekto savybės yra iš anksto nustatytos konstantos, kurti kitus Math tipo objektus ne tik nebūtina, bet ir nepriimtina, ir jie visada turi būti pasiekiami tuo pačiu būdu, pvz.:

Var CircleLength = skersmuo * Math.PI;

Be savybių, matematikos objektas taip pat apibrėžia metodus, atitinkančius pagrindines matematines funkcijas. Visi jie išvardyti 4.13 lentelėje.

4.13 lentelė. „JavaScript“ matematikos metodai Metodas ir jo sintaksė Aprašymas
abs (skaičius)Grąžina absoliučią argumento vertę
atan2(y, x)Grąžina skaičių diapazone nuo -? į?, reiškiantis kampą (radianais) tarp x ašies ir taško (x, y). Atkreipkite dėmesį, kad pirmasis argumentas yra Y koordinatė
exp(skaičius)Grąžina E į nurodytą laipsnį (eksponentinis logaritmas)
lubos (skaičius), grindys (numeris)Grąžina vertę, kuri yra artimiausias didesnis (lubos) arba mažesnis (grindys) sveikasis skaičius
min(skaičius1, skaičius2), maks.(skaičius1, skaičius2)Pateikite mažesnį (min.) arba didesnį (maks.) dviejų lyginamų argumentų skaičių
sin (skaičius), cos (skaičius), tan (skaičius), asin (skaičius), acos (skaičius), atan (skaičius)Grąžina standartinių trigonometrinių funkcijų – sinuso, kosinuso, liestinės, arcsinuso, arkosinuso ir arktangento – rezultatą
pow (bazė, rodiklis)Grąžina bazę į eksponento laipsnį
atsitiktinis ()Grąžina pseudoatsitiktinį skaičių nuo 0 iki 1
apvalus (skaičius)Grąžina vertę, suapvalintą iki artimiausio sveikojo skaičiaus
sqrt (skaičius)Grąžina skaičiaus kvadratinę šaknį

Kaip ir ypatybių atveju, norėdami naudoti matematikos objekto metodus, turite nurodyti patį objektą, o ne jo kopijas. Pavyzdžiui, parašykime funkciją, kuri grąžins skersmenį pagal apskritimo plotą:

Funkcija CircleDiam(Kvadratas) ( Spindulys = Math.sqrt(Kvadratas / Math.PI) ; )

Norėdami jį naudoti praktiškai, galite naudoti raginimo ir įspėjimo metodus:

Var sq = prompt("Įveskite sritį",1); var di = CircleDiam(sq); alert("Apskritimo skersmuo: "+di);

Šių ir kitų Math objekto metodų veikimą galima pamatyti faile math.html.

Skaičių objektas

Skaičių objektas yra paprastų skaitinių tipų objektų reprezentacija. Jis turi specialių savybių skaitinėms konstantoms, tokioms kaip „maksimalus skaičius“, „ne skaičius“ ir „begalybė“. Norėdami sukurti naują skaičių tipo objektą, naudokite šią sintaksę:

Naujas skaičius (reikšmė)

Praktikoje dažniausiai naudojamas objektas Number yra jo konstantų naudojimas argumentams patvirtinti ir vykdymo laiko klaidoms sekti. Pavyzdžiui, norėdami patikrinti, ar kintamojo reikšmė yra skaičius, ar ne, galite naudoti šį metodą:

Jei (x!=Skaičius.NaN);

Šiuo atveju sąlyga bus teisinga, jei kintamajame x yra skaičius, nes jis lyginamas su specialia reikšme - NaN, reiškiančia „ne skaičius“. Be NaN, galite naudoti kitas specialias reikšmes - visos jos yra skaičiaus objekto savybės:

  • MAX_VALUE – didžiausias galimas skaičius
  • MIN_VALUE – mažiausias galimas skaičius
  • NaN – ne skaičius
  • NEGATIVE_INFINITY – „neigiama begalybė“, speciali reikšmė, grąžinama perpildymo atveju
  • POSITIVE_INFINITY – „teigiama begalybė“, speciali reikšmė, grąžinama perpildymo atveju

Visos šios savybės yra konstantos, todėl norint jas naudoti nereikia kurti naujo skaičiaus objekto. Be pirmiau minėtų savybių, numeriui taip pat yra apibrėžtos standartinės konstruktoriaus ir prototipo savybės

Be savybių, Skaičių objektas, žinoma, turi ir metodus. Be standartinių „toSource“, „toString“ ir „valueOf“ metodų, „JavaScript 1.5“ pristatė 3 naujus vietinius objekto „Skaičius“ metodus – toExponential, toFixed ir toPrecision. Visi jie skirti skaičiams konvertuoti į eilutes pagal vieną ar kitą formatą. Taigi metodas toExponential konvertuoja skaičių į eilutę kaip skaičių su eksponentu, metodas toFixed paverčia jį eilute, kurioje yra skaičius su fiksuotu skaičiumi po kablelio, o metodas toPrecision naudoja vieną iš šių metodų, priklausomai nuo skaičių ir skirtų skaitmenų po kablelio skaičių.

Išsamiau išnagrinėkime šiuos metodus, kurių sintaksę svarstome:

Metodas ([simbolių skaičius])

Akivaizdu, kad visuose metoduose skaitmenų skaičius rodo skaitmenų po kablelio skaičių, bet jei toFixed metodo numatytoji reikšmė (t. y. jei nieko nenurodyta) yra 0, tada toExponential ir toPrecision atveju tai yra reikalingas skaitmenų po kablelio skaičius. kad būtų rodomas visas skaičius. Norėdami geriau suprasti visų šių metodų veikimą ir skirtumus, pažvelkime į juos naudodami 4.5 sąrašo pavyzdį:

Sąrašas 4.5. eksponentinis, fiksuotas ir tikslus metodas

Skaičių objekto metodai

Čia vėl (kaip ir 4.4 sąraše) panaudojome funkciją, kuri pirmiausia išspausdina išraišką, o paskui jos interpretacijos rezultatą, tačiau šiuo atveju ją pavadinome printNumber. Toliau pateikiamas faktinis kintamojo, pagal kurį bus atliekami skaičiavimai, deklaravimas. Šiuo atveju mes jį paskelbėme kaip Number tipo objektą, nors iš tikrųjų galėjome apsiriboti paprasta kintamojo deklaracija (x = 12,45678). Galiausiai dokumentas atidaromas rašymui ir pirmiausia į jį atspausdinama kintamojo x reikšmė be jokių aiškių konversijų (tačiau jau žinome, kad iš tikrųjų čia automatiškai taikomas metodas toString()), po to visi trys nagrinėjami metodai Iš pradžių iškviečiami nenurodant skaičių simbolių, o po to su parametrais 2 ir 4. Šio scenarijaus rezultatas bus 10 eilučių, kuriose yra poros „išraiška: apdorojimo rezultatas“ (4.9 pav.).

Ryžiai. 4.9.

Apibendrinant, belieka dar kartą pažymėti, kad šie metodai pasirodė tik JavaScript 1.5 versijoje ir atitinkamai neveikia Netscape 4, MSIE 4/5 ir Opera naršyklėse iki 7.0 versijos. Tuo pačiu metu jie suteikia daugiau lankstumo formatuojant skaičius išvestyje nei, tarkime, matematikos objekto round() metodas.

2011-08-01 // Turite klausimų, pasiūlymų, pastabų? Tu gali

Dar XHTML / HTML4 laikais kūrėjai turėjo tik keletą parinkčių, kurias galėjo naudoti norėdami saugoti savavališkus su DOM susijusius duomenis. Galėjote sugalvoti savo atributus, bet tai buvo rizikinga – jūsų kodas negaliotų, naršyklės gali nepaisyti jūsų duomenų ir gali kilti problemų, jei pavadinimas atitiks standartinius HTML atributus.

Todėl dauguma kūrėjų laikėsi klasės arba rel atributų, nes jie buvo vienintelis pagrįstas būdas saugoti papildomas eilutes. Pavyzdžiui, tarkime, kad kuriame valdiklį, kad būtų rodomi pranešimai, pavyzdžiui, „Twitter“ pranešimų laiko juosta. Idealiu atveju „JavaScript“ turėtų būti konfigūruojamas neperrašant kodo, todėl vartotojo ID apibrėžiame klasės atribute, pavyzdžiui:

Mūsų JavaScript kodas ieškos elemento su ID msglist . Naudodami scenarijų ieškosime klasių, prasidedančių user_ , o "bob" mūsų atveju bus vartotojo ID ir rodysime visus to vartotojo pranešimus.

Tarkime, kad taip pat norėtume nustatyti maksimalų pranešimų skaičių ir praleisti senesnius nei šešių mėnesių (180 dienų) pranešimus:

Mūsų klasės atributas labai greitai sutrinka – lengviau suklysti, o eilutes analizuoti JavaScript darosi vis sunkiau.

HTML5 duomenų atributai

Laimei, HTML5 pristatė galimybę naudoti pasirinktinius atributus. Galite naudoti bet kokį pavadinimą mažosiomis raidėmis su data- , pavyzdžiui:

Priskirti duomenų atributai:

  • tai yra eilutės – jose galite saugoti bet kokią informaciją, kuri gali būti pavaizduota arba užkoduota kaip eilutė, pvz., JSON. Tipo liejimas turi būti atliktas naudojant „JavaScript“.
  • turėtų būti naudojamas tais atvejais, kai nėra tinkamų HTML5 elementų ar atributų
  • kreiptis tik į puslapį. Skirtingai nuo mikroformatų, išorinės sistemos, pvz., paieškos sistemos ir tikrinimo programos, jų turėtų nepaisyti
„JavaScript“ apdorojimo pavyzdys Nr. 1: getAttribute ir setAttribute

Visos naršyklės leidžia gauti ir keisti duomenų atributus naudojant getAttribute ir setAttribute metodus:

Var msglist = document.getElementById("msglist"); var show = msglist.getAttribute("data-list-size"); msglist.setAttribute("data-list-size", +show+3);

Tai veikia, bet turėtų būti naudojama tik siekiant išlaikyti suderinamumą su senesnėmis naršyklėmis.

„JavaScript“ apdorojimo pavyzdys Nr. 2: „jQuery“ bibliotekos duomenų() metodas

Nuo 1.4.3 versijos jQuery metodas data() tvarko HTML5 duomenų atributus. Jums nereikia aiškiai nurodyti duomenų priešdėlio, todėl toks kodas veiks:

Var msglist = $("#msglist"); var show = msglist.data("sąrašo dydis"); msglist.data("sąrašo dydis", rodyti+3);

Tačiau atminkite, kad „jQuery“ bando konvertuoti tokių atributų reikšmes į atitinkamus tipus (loginius, skaičius, objektus, masyvus arba nulinius) ir turės įtakos DOM. Skirtingai nei setAttribute , metodas data() fiziškai nepakeis atributo data-list-size – jei patikrinsite jo reikšmę ne „jQuery“, jis vis tiek bus 5.

„JavaScript“ apdorojimo pavyzdys Nr. 3: API darbui su duomenų rinkiniais

Galiausiai turime API, skirtą darbui su HTML5 duomenų rinkiniais, kuri grąžina DOMStringMap objektą. Svarbu atsiminti, kad duomenų atributai susiejami su objektu be duomenų priešdėlių, iš pavadinimų pašalinami brūkšneliai, o patys pavadinimai konvertuojami į camelCase, pavyzdžiui:

Atributo pavadinimas Duomenų rinkinio API pavadinimas
duomenų vartotojas Vartotojas
duomenų maksimalus maxage
duomenų sąrašo dydis sąrašo dydis

Mūsų naujas kodas:

Var msglist = document.getElementById("msglist"); var show = msglist.dataset.listSize; msglist.dataset.listSize = +rodyti+3;

Šią API palaiko visos šiuolaikinės naršyklės, bet ne IE10 ir senesnės versijos. Šioms naršyklėms yra išeitis, tačiau tikriausiai praktiškiau naudoti „jQuery“, jei rašote senesnėms naršyklėms.

Dirbdami su data ir laiku „JavaScript“, naudojate objektą Date. Manau, nereikia aiškinti, kaip dažnai tenka dirbti su data ir laiku. Ir šiame straipsnyje sužinosite, kaip tai padaryti naudojant „JavaScript“.

Pradėkime, kaip įprasta, nuo Date objekto konstruktorių. Jų yra keturios. Pirmasis yra konstruktorius be parametrų ir grąžina dabartinį laiką ir datą:

Var data = new Data();
dokumentas.rašyti(data);

Dėl to pamatysite maždaug taip: „Thu Oct 14 2010 11:42:06 GMT+0400“.

Antrasis Datos objekto konstruktorius yra vieno parametro konstruktorius. Šiame parametre nurodytas milisekundžių skaičius, praėjęs nuo 1970-01-01 (Unix eros gimimo). Pavyzdžiui, taip:

Var data = new Data(135253235);
dokumentas.rašyti(data);

Dėl to matysite: „Penk. Jan 02 1970 16:34:13 GMT+0300“.

Šis konstruktorius leidžia sukurti Datos objektą su šiais parametrais: metai, mėnuo ir diena:

Var data = new Data(2010, 0, 12);
dokumentas.rašyti(data);

Rezultatas: "2010 m. sausio 12 d. antradienis 00:00:00 GMT+0300". Taip pat atkreipkite dėmesį, kad 0 mėnuo yra sausis, o 11 mėnuo yra gruodis.

Ir paskutinis „JavaScript“ klasės „Data“ konstruktorius leidžia sukurti Datos objektą su visais datos ir laiko parametrais: metai, mėnuo, diena, valandos, minutės ir sekundės.

Var data = new Data(2010, 0, 12, 23, 45, 12);
dokumentas.rašyti(data);

Gausite šią eilutę: „Tue Jan 12 2010 23:45:11 GMT+0300“. Tai visi „JavaScript Date“ objektų konstruktoriai, kuriuos kūrėjai mums pateikė.

Datos klasė neturi specialių savybių, todėl pereikime tiesiai prie metodų. Iš karto pradėkime nuo metodų, kurie veikia lygiai taip pat, tačiau kiekvienas iš jų pateikia savo datos ir laiko elementą:

Var data = new Data();
document.write("Metai - " + data.getFullYear() + "
");
document.write("Mėnuo - " + data.getMonth() + "
");
document.write("Skaičius - " + data.getDate() + "
");
document.write("Savaitės diena - " + date.getDay() + "
");
document.write("Valanda - " + data.getHours() + "
");
document.write("Minutė - " + data.getMinutes() + "
");
document.write("Second - " + date.getSeconds() + "
");
document.write("Milisekundė - " + data.getMilliseconds() + "
");
document.write("Milisekundžių skaičius, praėjęs nuo 1970-01-01 - " + date.getTime() + "
");

Vykdydami šį scenarijų iš karto suprasite, ką daro kiekvienas iš šių metodų. Vienintelis dalykas, kurį norėčiau pastebėti, yra tai, kad savaitės dienų numeracija taip pat prasideda nuo nulio. Be to, sekmadienio indeksas yra 0, o šeštadienio indeksas yra 6.

Yra panašių metodų, tačiau data ir laikas rodomi Grinvičo laiku. Parašykime šį kodą:

Var data = new Data();
document.write("Metai - " + data.getUTCFullYear() + "
");
document.write("Mėnuo - " + data.getUTCMonth() + "
");
document.write("Skaičius - " + data.getUTCDate() + "
");
document.write("Savaitės diena - " + date.getUTCDay() + "
");
document.write("Valanda - " + data.getUTCHours() + "
");
document.write("Minutė - " + data.getUTCMutes() + "
");
document.write("Second - " + date.getUTCSeconds() + "
");
document.write("Milisekundė - " + data.getUTCMilliseconds() + "
");

Vykdydami šį scenarijų sužinosite dabartinę datą ir laiką Grinviče.

Get() metodų priešingybė yra set() metodai. Jei pirmieji grąžina tam tikras reikšmes, tai antrieji, priešingai, jas keičia. Tiesą sakant, šio scenarijaus gal ir nepateiksiu, bet kad neliktų klausimų, padarykime tai:

Var data = new Data();
data.setFullYear(1990);
data.setMonth(11);
data.setDate(15);
data.setHours(9);
data.setMinutes(20);
data.setSeconds(0);
data.setMilliseconds(10);
dokumentas.rašyti(data);

Tikiuosi, kad pastebėjote, kad setDay() metodas neegzistuoja. Tai reiškia, kad savaitės diena parenkama atsižvelgiant į metus, mėnesį ir datą.

Grinvičui taip pat yra panašių metodų. Pridedamas tik UTC priešdėlis, pavyzdžiui, norint pakeisti mėnesį, naudojamas setUTCMonth() metodas.

Ir paskutinis metodas yra setTime() . Kaip parametras imamas milisekundžių skaičius, praėjęs nuo 1970-01-01:

Data.setTime(39293012);
dokumentas.rašyti(data);

Dėl to pamatysite: „Thu Jan 01 1970 13:54:53 GMT+0300“.

Tai visi „JavaScript“ objekto „Data“ konstruktoriai ir metodai.

Pamokoje bus nagrinėjamos Javascript objektų temos. Kalbėsime apie pasirinktinius objektus: objekto kūrimą javaScript, darbą su objekto savybėmis ir metodais, taip pat javascript prototipus. Trumpai aprašomas darbas su Vietos, Navigatoriaus, Ekrano objektais


Svetainės tikslas – suteikti vartotojams praktinių darbo su kalba įgūdžių. Laboratoriniai javaScript darbai, pateikiami didėjant jų sudėtingumui ir paremti aiškiais, išspręstais pavyzdžiais, leis lengvai suprasti tiriamą medžiagą ir išmokti savarankiškai kurti „gyvus“, dinamiškus tinklalapius.


„JavaScript“ yra kelių tipų objektai:

  • įmontuoti objektai
  • naršyklės objektai
  • objektai, kuriuos programuotojas sukuria savarankiškai (nustatyti vartotojo)

Integruoti objektai yra iš anksto nustatyti objektai... Dauguma jų jau buvo aptarti ankstesnėse pamokose.

Tolesnėse pamokose kalbėsime apie naršyklės objektus javaScript.

Dabar pats laikas susipažinti su pasirinktiniais „JavaScript“ objektais.

  • Objektas
  • Skaičius (numerio apdorojimas)
  • Styga (eilutės apdorojimas)
  • Masyvas
  • Matematika (matematinės formulės, funkcijos ir konstantos)
  • Data (veikia su datomis ir laiku)
  • RegExp
  • Global (jo savybės Infinity, NaN, neapibrėžta)
  • Funkcija
JavaScript objekto kūrimas

Yra 2 būdai sukurti objektus:

  • Objekto inicijavimo priemonės naudojimas (arba kolekcijos objektų kūrimas)
  • Objektų konstruktoriaus () naudojimas
  • Kolekcijos objektų kūrimas
  • var objekto_pavadinimas = naujas Objektas(); objekto_pavadinimas.property = vertė;// taško žymėjimas objekto_pavadinimas["nuosavybė"] = vertė;// skliaustų žymėjimas

    Svarbu: verta paminėti, kad negalite naudoti skaičiaus kaip reikšmės: myObg.rost = 2 // IMPOSSIBLE! myObg.rost = "2" // įmanoma

    Pavyzdys: sukurkite objektą myBrowser su savybių pavadinimu (reikšme ) ir versija (vertė " 9.0 »)


    ✍ 1 sprendimas:

      var myBrowser = naujas objektas(); myBrowser.name= "Microsoft Internet Explorer"; myBrowser["versija"]= "9.0";

    Pavyzdys: sukurkite du kolekcijos objektus (automobilį ir moto) su spalva ir prekės ženklo savybėmis. Spausdinti nuosavybės vertę spalva objekte automobilis ir savybes prekės ženklas objekte moto.


    ✍ Sprendimas:
      var automobilis = naujas objektas(); car.color = "Balta" ; automobilis.maksimalus greitis = 220; car.brand = "Nissan" ; document.write ("Automobilis turi spalvą: " + car.color ) ; var moto = ( spalva: "Mėlyna", arklio Galia: 130, prekės ženklas: "Yamaha" ); document.write ("Motociklą gamina: " + moto.brand ) ;

      var automobilis = naujas objektas(); car.color = "Balta"; automobilis.maxSpeed=220; car.brand = "Nissan"; document.write("Automobilio spalva: " + car.color); var moto = ( spalva: "Mėlyna", arklio galia: 130, prekės ženklas: "Yamaha"); document.write("Motociklas turi gamintoją: " + moto.brand);

    "Kiekvienam" ciklas dirbant su objektais javascript

    Apie šį dizainą jau buvo daug pasakyta.
    „Javascript“ ciklas „for in“ yra skirtas kartoti masyvus, kolekcijas ir objektus.

    Pažvelkime į naudojimo pavyzdį:

    1 2 3 4 5 6 7 8 var myBrowser = naujas objektas(); myBrowser.name = "Microsoft Internet Explorer" ; myBrowser[ "versija" ] = "9.0" ; for (var a in myBrowser) ( alert(a) ; // kartoja per myBrowser objekto ypatybes. Grąžins pavadinimą, versiją alert(myBrowser[ a] ) ; // Grąžina ypatybių reikšmes

    var myBrowser = naujas objektas(); myBrowser.name= "Microsoft Internet Explorer"; myBrowser["versija"]= "9.0"; for (var a in myBrowser) ( alert(a); // kartoja per myBrowser objekto ypatybes. Grąžins pavadinimą, versiją alert(myBrowser[a]); // Grąžina ypatybių reikšmes

  • Konstruktorių klasių kūrimas
  • Konstruktorių klasės kuriamos dviem etapais:

  • pirma, klasė sukuriama naudojant konstruktorių;
  • tada pagal konstruktorių sukuriamas naujas objektas.
  • Objekto klasės kūrimas naudojant konstruktorių (konstruktorių klasių kūrimas):

    function Object_class_name(sv1, sv2)( this.sv1 = vertė; this.sv2 = vertė; )

    Naujo objekto kūrimas pagal objektų klasės konstruktorių:

    var objekto_pavadinimas = naujas klasės_pavadinimas("krūvos_vertė1","darbuotojo_vertė2");

    var objekto_pavadinimas =naujas klasės_pavadinimas(); objekto_pavadinimas.stv1="vertė_stv1"; objekto_pavadinimas.stv2="vertė_stv2";

    Konstruktorių klasės pavadinimą įprasta rašyti didžiąja raide!


    Pažiūrėkime į pavyzdį:

    Pavyzdys: Konstruktoriaus kūrimas objektų klasei ir objekto kūrimas pagal šią klasę: sukurkite objektą myBrowser su savybių pavadinimu (reikšme „Microsoft Internet Explorer“) ir versija (vertė " 9.0 »)

    Atviras sprendimas

    1 2 3 4 5 6 7 8 function Naršyklė (pavadinimas, versija) ( this .name = name; this .version = version; ) var myBrowser = new Browser("Microsoft Internet Explorer" , "9.0" ) ; įspėjimas(manoNaršyklė.vardas) ; įspėjimas(manoNaršyklė.versija) ;

    function Naršyklė (pavadinimas, versija)( this.name = pavadinimas; this.version = version; ) var myBrowser = new Naršyklė("Microsoft Internet Explorer","9.0"); įspėjimas(manoNaršyklė.vardas); įspėjimas (mano naršyklė.versija);

    Taigi, dar kartą palyginkime su pirmuoju objektų kūrimo būdu:

    // rinkinio objektas var myBrowser = (pavadinimas: "Microsoft Internet Explorer", versija: "7.0"); įspėjimas(manoNaršyklė.vardas); įspėjimas (mano naršyklė.versija); // sekanti eilutė neteisinga! var myBrowser1 = new myBrowser("MozillaFirefox","3.5"); // NETIESA! !!

    Svarbu: Kurdami kolekcijos objektą, negalite sukurti klasės egzemplioriaus, nes tai nėra klasė


    js užduotis 6_1. Sukurkite objektą Darbuotojas, kuriame būtų informacija apie tam tikros įmonės darbuotojus, pvz., Vardas, skyrius, Telefonas, Atlyginimas (naudokite konstruktoriaus funkciją ir šį raktinį žodį). Sukurkite objekto egzempliorių

    Prieiga prie objekto ypatybių naudojant javascript

    Objekto_pavadinimas. nuosavybės pavadinimas

    1 2 agent007.Name = "Bendra" ; alert(agent007.Vardas) ;

    agent007.Name = "obligacija"; alert(agent007.Vardas);

    Kas yra numatytoji nuosavybė

    Konstruktoriaus funkcija leidžia objektui priskirti numatytąsias ypatybes. Kiekvienas sukurto objekto egzempliorius turės šias savybes.

    1 2 3 4 5 6 7 8 9 10 function Student(vardas, telefonas) (šis .vardas = vardas; this .phone = "22-22-22" ; // numatytoji ypatybė! ) var ivanov = new Student("Ivanas" , "33-33-33" ) ; perspėjimas (ivanov.name) ; // duos "Ivano" įspėjimą (ivanov.phone ) ; // bus rodomas "22-22-22" ivanov.phone = "33-33-33" ; //pakeisti numatytąjį nuosavybės įspėjimą (ivanov.phone ) ; // grąžins "33-33-33"

    function Studentas(vardas, telefonas) ( this.name=name; this.phone="22-22-22"; // numatytoji ypatybė! ) var ivanov = new Student("Ivanas","33-33-33" ) ; perspėjimas(ivanov.vardas); // išduos „Ivano“ įspėjimą (ivanov.phone); // parodys "22-22-22" ivanov.phone="33-33-33"; //pakeisti numatytąjį nuosavybės įspėjimą (ivanov.phone); // grąžins "33-33-33"

    Savybių įtraukimas į objektų klasę

    Turto vertę galima pridėti už:

    • konkretus objekto pavyzdys;
    • visa klasė objektų

    Savybių pridėjimas į konkretų(pavyzdžiui) objektas:

    objekto_pavadinimas. property_name = vertė

    ivanov.biology = "puikiai";

    Svarbu: pavyzdyje ypatybė nustatyta konkrečiam objektui, o ne objektų klasei!

    Savybių pridėjimas į klasę objektai:

    klasės_pavadinimas.prototipas. property_name = vertė

    Student.prototype.biology = "puikiai";

    Svarbu: pavyzdyje ypatybė (pagal numatytuosius nustatymus) nustatyta objektų klasei! Tai daroma naudojant prototipą; prototipas – objektas, apibrėžiantis struktūrą

    1 2 Student.prototype.email = " [apsaugotas el. paštas]" ; įspėjimas(ivanov.email ) ; // bus rodomas " [apsaugotas el. paštas]"

    Student.prototype.email=" [apsaugotas el. paštas]"; įspėjimas(ivanov.email); // bus rodomas " [apsaugotas el. paštas]"

    Pavyzdys: visų objekto savybių rodymo su reikšmėmis pavyzdys

    1 2 3 4 5 6 7 8 9 var summerTour= ( Turkija : 2000 , Ispanija : 3000 , Egiptas : 1000 ); var variantas; for (parinktis summerTour) ( document.write (parinktis + ":" + summerTour[ parinktis] + "
    " ) ; }

    var summerTour=( Turkija: 2000, Ispanija: 3000, Egiptas: 1000); var variantas; for (parinktis vasaros kelionėje)( document.write(parinktis + ":" + summerTour + "
    "); }

    Javascript prototipai (įvadas)

    Pažvelkime į pavyzdį, kaip javascript klasės kuriamos naudojant prototipus

    Pavyzdys: Sukurkite objektų klasę Automobilis (automobilis) su trimis savybėmis: pavadinimas (pavadinimas), modelis (modelis), spalva (spalva). Sukurkite klasės egzempliorių su konkrečiomis nuosavybės reikšmėmis. Tada per sukurtą egzempliorių pridėkite į klasę savininko nuosavybė su konkrečia numatyta verte ( Ivanovas). Spausdinkite visas sukurto egzemplioriaus ypatybių vertes

    function Automobilis(pavadinimas, modelis, spalva) ( /* automobilio objekto konstruktorius*/ this .name = name; this .model = modelis; this .color = color; ) var myCar= new Car; myCar.name = "Mercedes" ; myCar.model = "600" ; myCar.color = "žalia" ; Car.prototype .owner = "Ivanovas" ; /* pridėti naują nuosavybę*/ alert(manoAutomobilio pavadinimas + " " + manoAutomobilis.modelis + " " + manoAutomobilis.spalva + " " + manoAutomobilis.savininkas ) ;

    function Automobilis(pavadinimas, modelis, spalva) ( /* automobilio objekto konstruktorius*/ this.name = pavadinimas; this.modelis = modelis; this.color = color; ) var myCar=new Car; myCar.name="Mercedes"; myCar.model="600"; myCar.color="green"; Car.prototype.owner = "Ivanovas"; /* pridėti naują ypatybę*/ įspėjimas(manoAutomobilis.pavadinimas+" "+manoAutomobilis.modelis+" "+manoAutomobilis.spalva+" "+manoAutomobilis.savininkas);

    js užduotis 6_2. Jei norite atlikti js 6_1 užduotį per sukurtą objekto Darbuotojas egzempliorių, objekto klasėje pridėkite naują adreso ypatybę

    JavaScript objekto metodai

    Objekto metodo kūrimas

    Pavyzdys: prie naršyklės objektų konstruktoriaus pridėkite metodą aboutBrowser, kuris naršyklės ekrane parodys informaciją apie šio objekto savybes

    1 2 3 4 5 6 7 8 9 10 11 12 13 function showBrowser() ( document.write("Naršyklė: " + šis .vardas + " " + ši .versija ) ; ) function Browser(pavadinimas, versija) (šis .name = pavadinimas; tai .versija = versija; tai .aboutBrowser = showBrowser ) var myBrowser= new Browser("Microsoft Internet Explorer" , 8.0 ); myBrowser.aboutBrowser();

    function showBrowser() ( document.write("Naršyklė: " + this.name + " " + this.version); ) function Naršyklė(pavadinimas, versija) ( this.name = pavadinimas; this.version = version; this.aboutBrowser = showBrowser ) var myBrowser=new Browser("Microsoft Internet Explorer",8.0); myBrowser.aboutBrowser();

  • Objekto metodai sukuriami remiantis funkcija ir pridedami prie klasės konstruktoriaus
  • function Naršyklė(pavadinimas, versija) ( this.name = pavadinimas; this.version = version; this.aboutBrowser = function())( document.write("Naršyklė: " + pavadinimas + " " + versija); ) ) var myBrowser = nauja naršyklė ("Microsoft Internet Explorer", 8.0); myBrowser.aboutBrowser();

    js užduotis 6_3. Sukurkite objekto klasę (Tour), skirtą kelionių įmonės veiklai, naudodami kelionės kainos apskaičiavimo metodą, pagrįstą: žmonių skaičius * dienų kiekis * šalies tarifas. Sukurkite turkeyTour objekto egzempliorių su savybių vertėmis. Rodyti visas objekto savybes ekrane. Sukurkite skaičiavimo objekto metodą, pagrįstą funkcija.

    Integruotų objektų Javascript prototipai (Prototype).

    Savybių ir metodų pridėjimas prie integruotų objektų (prototipas)

    JavaScript yra prototipu pagrįsta OOP (objektinio programavimo) kalba.
    Prototipas – objektas, apibrėžiantis struktūrą

    Pažiūrėkime, kaip dirbti su prototipais naudojant pavyzdį:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 /* Prototipo keitimas */ // Numatytosios nuosavybės įtraukimas į integruotą objektą String .prototype .color = "black" ; // Pridėti (pakeisti) metodą į integruotą objektą String .prototype .write = stringWrite; function stringWrite() ( document.write ("" ) ; document.write (šis .toString () ) ; document.write ("" ) ; ) // naudokite modifikuotą klasę var s = new String ("Tai eilutė “); s.color = "raudona" ; s.write();

    /* Prototipo keitimas */ // Numatytosios savybės įtraukimas į integruotą objektą String.prototype.color = "black"; // Metodo pridėjimas (keitimas) į integruotą objektą String.prototype.write = stringWrite; function stringWrite())( document.write(""); document.write(this.toString()); document.write(""); ) // naudokite modifikuotą klasę var s = new String("Tai yra eilutė"); s.color = "raudona"; s.write();

    Svarbu: Negalite pridėti ypatybių ar metodų prie matematinio objekto.


    js užduotis 6_4. Pridėkite programos kodą, kad užbaigtumėte užduotį: Pridėkite printMe() metodą į integruotą String klasę, kuri spausdina žodį — Ura! kaip antraštė (h... žyma), vartotojo nurodytas lygis ().
    Antraštės lygį (1, 2...6) galima pridėti kaip String klasės savybę.
    Prisiminkime, kaip turėtų atrodyti antraštės žymos HTML:

    Antraštė

    Užpildykite kodą:

    1 2 3 4 5 6 7 8 Styga .prototype .uroven = "1" ; ... function printZagolovok () ( ... ... ) var s= new ...; ...

    String.prototype.uroven="1"; ... funkcija printZagolovok ()( ... ... ) var s=new ...; ...

    Santrauka: dar kartą palyginkime dvi pasirinktinių objektų naudojimo „JavaScript“ parinktis:

  • Kolekcijos objektų kūrimas
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 var myBook= naujas objektas () ; myBook.title = "knyga" ; myBook.price = "200" ; alert(myBook[ "title" ] ) ; // 1-й вариант обращения к свойствам alert(meBook.price ) ; // 2-й вариант обращения к свойствам function myBookShow() { for (var i in myBook) { document.write (i+ ": " + myBook[ i] + "!}
    " ) ; // Pakartokite per savybes ) ) myBook.show = myBookShow; myBook.show () ;

    var myBook=new Object(); myBook.title="book"; myBook.price="200"; alert(myBook["title"]); // 1-й вариант обращения к свойствам alert(meBook.price); // 2-й вариант обращения к свойствам function myBookShow() { for (var i in myBook) { document.write(i+": "+myBook[i]+"!}
    "); // Pakartokite per ypatybes ) ) myBook.show=myBookShow; myBook.show();

  • Konstruktorių klasių kūrimas
  • 1 2 3 4 5 6 7 8 9 10 11 12 13 14 function myBook(title, price) ( // apibrėžiančios ypatybes this .title = title; this .price = kaina; // apibrėžiantis metodą this .show = show; function show() ( document.write ("Pavadinimas: " + tai pavadinimas ) document.write ( "Kaina: " + ši .kaina ) ) var book = new myBook ( "Knyga" , 200 ) ; knyga.show();

    function myBook(title,price)( // apibrėžiančios ypatybes this.title = title; this.price = kaina; // apibrėžiantis metodą this.show = show; funkcija show() ( document.write("Pavadinimas: " + tai pavadinimas document.write("Kaina: " + this.price = new myBook("Knyga", 200); knyga.show();> Eiti į pagrindinį puslapį ......

  • Eikite į pagrindinį puslapį
  • ...
  • ...
  • *Kompleksas: meniu elementų skaičius, jų pavadinimai ir url reikia paprašyti vartotojo

    Patarimas: norėdami ekrane rodyti eilutę rodydami() metodą, naudokite metodą document.write().

    „JavaScript“ vietos, navigatoriaus, ekrano „JavaScript“ navigatoriaus objektai

    Pažiūrėkime, kaip naudoti navigatoriaus objektą JavaScript naudojant pavyzdį:

    Pavyzdys: parašykite funkciją, kuri parodys:

    • naršyklės pavadinimas
    • naršyklės kalba
    • OS pavadinimas
    • ar įjungti slapukai
    • ar vartotojas prisijungęs prie interneto?
    • Ekrano skiriamoji geba
    • spalvų gylis
    • įkelto puslapio adresas
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 var variantas; // rodyti visas navigatoriaus objekto ypatybes (parinktis navigatoriuje) ( document.write (parinktis + " : " + navigatorius[ parinktis] + "
    " ) ;) // funkcija, skirta rasti konkrečias objekto naršymo funkcijos ypatybes userDetails () ( document.write ("

    Naršyklės pavadinimas: „+navigator.userAgent+“
    " ); document.write ("Naršyklės kalba: " + navigator.language + "
    " ); document.write("OS pavadinimas: " + navigator.oscpu + "
    " ); document.write (" Ar įjungti slapukai: " + navigator.cookieEnabled + "
    " ); document.write ("Ar internetas prijungtas: " + navigator.nLine + "
    " ) ; ) userDetails() ;

    var variantas; // rodyti visas navigatoriaus objekto ypatybes (parinktis navigatoriuje)( document.write(parinktis + " : " + navigatorius+ "
    "); ) // funkcija, skirta konkrečioms objekto naršymo funkcijos savybėms surasti userDetails ()( document.write("

    Naršyklės pavadinimas: „+navigator.userAgent+“
    "); document.write("Naršyklės kalba: " + navigator.language + "
    "); document.write("OS pavadinimas: " + navigator.oscpu + "
    "); document.write("Ar įjungti slapukai: " + navigator.cookieEnabled + "
    "); document.write("Ar internetas prijungtas: " + navigator.nLine + "
    "); ) userDetails();

    „JavaScript“ ekrano objektas

    Pažiūrėkime, kaip naudoti ekrano objektą „JavaScript“ naudodami pavyzdį:

    funkcija userDetails ()( document.write("Skyra: " + ekranas.plotis + " x " + ekranas.aukštis + "
    "); document.write("Spalvų gylis: " + ekranas.spalvos gylis + " x " + ekranas.aukštis + "
    "); ) userDetails();

    javascript vietos objektas

    Pažiūrėkime, kaip naudoti vietos objektą JavaScript naudojant pavyzdį:

    1 2 3 4 function userDetails() ( document.write("Įkelto puslapio adresas: " + vieta.href + "
    " ) ; ) userDetails() ;

    funkcija userDetails ()( document.write("Įkelto puslapio adresas: " + vieta.href + "
    "); ) userDetails();

    Išvados:

    • Naudodami išraiškas su nauju raktiniu žodžiu, galite sukurti objektų egzempliorius, ty konkrečius jų egzempliorius.
    • Be to, javascript prototipo ypatybės dėka galima pridėti naujų savybių ir metodų prie objektų, kuriuos sugalvojo vartotojas ir kurių nebuvo originaliuose įmontuotuose objektuose.
    • Objektų kūrimas gali būti naudojamas duomenų bazėms kurti.