Unde se formează obiectul de date JS. Cum pot accesa și manufa obiecte imbricate, matrice sau json? Locația JavaScript, Navigator, obiecte de ecran

Metoda de date din Jquery ne oferă posibilitatea de a asocia date arbitrare cu orice document sau obiect JavaScript, care vă permite să faceți codul mai scurt și citit. Începând cu versiunea de jQuery 1.4.3 a devenit posibilă utilizarea acestei metode pentru obiecte javascript., precum și urmărirea schimbărilor în aceste date.

Bazele

Să începem cu faptul că puteți apela metoda de date pentru obiectul jQuery, precum și utilizarea funcției $ .Data () direct.

// Folosind metoda: $ ("# # mydic"). Date ("cheie", "medie aleator"); // Folosind o funcție direct: $ .data ($ ("# # mydic"). Obțineți (0), "cheie", "sens arbitrare");

Funcția de date este o implementare la nivel scăzut, care este de fapt utilizată la apelarea metodei. Metoda Obiect JQuery este mult mai convenabilă, vă permite să vă includeți ca un lanț de apeluri.

De asemenea, rețineți că trebuie să transmiteți un element DOM ca primul parametru la funcția $ .Data și nu obiectul JQuery.

Metoda obiectului necesită doi parametri - cheia și valoarea. Cheia este constanta sirului, iar valoarea este orice structura de date, inclusiv functiile de matrice si obiecte. Există o sintaxă alternativă în care obiectul poate fi transmis ca un parametru:

// puteți transfera obiectul: $ ("# # mydic"). Date (("nume": "Stevie", "Vârsta": 21)); // același: $ ("# # mydic"). Date ("nume", "Stevie"). Datele ("Vârsta", 21);

Acum, dacă aveți nevoie să obțineți date salvate, puteți apela funcția de date prin trecerea acestuia ca parametru:

VAR THEVALUE \u003d $ ("# # mydic"). Datele ("Vârsta"); // 21.

Accesul la aceste date este deschis oriunde în scenariu. Veți primi date salvate, atâta timp cât există un element obținut conform unui selector dat.

VAR THEVALUE \u003d $ ("DIV: primul"). Date ("nume"); // Stevie $ ("DIV: primul"). Faceți clic pe (Funcție () (Alert (Acest )Data ("vârstă"); // 21));

JQuery 1.4.3 prezintă, de asemenea, date HTML5 stocate în atribute. Aceasta înseamnă că dacă aveți un element declarat după cum urmează:

În acest caz, puteți obține date din atributul Date-Interne-Id apelând metoda $ ("# img1". Datele ("ID intern"), care este, fără îndoială, convenabil pentru interogările AJAX.

Utilizarea metodei de date pentru obiectele JavaScript

Este posibil să fiți surprinși, dar metoda de date poate fi de asemenea utilizată pentru obiectele JavaScript convenționale. Această funcționalitate a apărut oficial în jQuery 1.4.3.

Var myobj \u003d (); $ (Myobj) .data ("oraș", "Springfield");

Exemplul dat este de fapt creând o proprietate de oraș pentru un anumit obiect. De ce să nu scrieți la myobj.city \u003d "Springfield" doar? Iar diferența este că metoda de date adaugă câteva evenimente utile care simplifică munca cu acest obiect. De exemplu:

Var Progressbar \u003d (); $ (Progressbar) "). Text (valoare +"% "); Break; Culoare": $ ("# progres"). CSS ("culoare", valoare); rupere; caz "activat": $ ("# progres") .Toggleclass ("activ", valoare); rupere;))); $ (Progressbar) .Data ("Activat", TRUE) .Data ("procentul", 21) .data ("culoare", "verde"); Consola.log (progresbar.enabled);

În exemplul dat, folosim metoda de date pentru a crea cel mai simplu API cu care putem actualiza elementul.

Există încă două evenimente care pot fi utilizate pentru obiectul JavaScript:

  • getData - declanșează înainte de a citi datele. Puteți să-l utilizați pentru a preveni datele obținute. De exemplu, pentru a recalcula valoarea.
  • rECHIDATA - declanșatoare când datele sunt instalate sau modificate. Acest eveniment este utilizat în pluginul JQuery Datalink. Cu aceasta, puteți asocia datele formularului cu obiectul JavaScript și lucrați cu câmpurile de formular ca și în cazul proprietăților obiectului.

În spatele scenelor

jQuery creează un obiect gol (pentru curios, se numește $ .Cache), care este depozitul tuturor valorilor pe care le salvați utilizând metoda de date. Fiecare element din DOM, care este utilizat cu metoda de date, este atribuit un identificator unic, care este apoi cheia pentru a accesa datele din obiectul $ .Cache.

jquery magazine nu numai datele de utilizator din acest memorie cache, date interne, stivuitoare de evenimente pe care le atârnați folosind funcțiile Live (), Bind () și delegate () sunt, de asemenea, acolo. Utilizarea stocării centrale face ca JQuery să fie mai fiabilă.

Concluzie

Metoda de date este doar una dintre numeroasele caracteristici JQuery, ceea ce face ca viața dezvoltatorilor web să fie mai ușoară. În combinație cu alte caracteristici ale bibliotecii, acesta completează fundația solidă pentru care ne putem baza.

Lecția va lua în considerare subiectul obiectelor JavaScript. Acesta va fi despre obiectele utilizatorului: crearea unui obiect în JavaScript, lucrați cu proprietăți și metode de obiect, precum și prototipuri JavaScript. Descrieți pe scurt munca cu obiecte Locație, Navigator, Ecran.


Site-ul site-ului - primirea utilizatorilor de abilități practice pentru a lucra cu limba. Lucrări de laborator Prin JavaScript, prezentat ca o complexitate a acestora crește și susținută de soluții vizuale, vă va permite să percepeți cu ușurință materialul studiat și să învățați cum să creați pagini web "Live", dinamice.


În JavaScript există mai multe tipuri de obiecte:

  • obiecte încorporate
  • obiecte de browser.
  • obiecte pe care programatorul le creează independent (personalizat)

Obiectele încorporate sunt obiecte predefinite, dintre care majoritatea au fost deja luate în considerare în lecțiile anterioare.

Obiectele de browser din JavaScript vor fi discutate în alte lecții.

Și acum timpul să se întâlnească obiecte personalizate în JavaScript.

  • Obiect (obiecte)
  • Numărul (procesarea numărului)
  • Șir (prelucrarea rândului)
  • Array (matrice)
  • Matematică (formule matematice, funcții și constante)
  • Data (lucrați cu date și timp)
  • Regexp.
  • Proprietățile globale (infinit, nan, nedefinite)
  • Funcţie.

JavaScript creează obiecte

Există două modalități de a crea obiecte:

  1. Utilizarea unui obiect inițializator (sau creați colecții de obiecte)
  2. Utilizarea designerului de obiecte ()
  1. Crearea de colecții
  2. var_ object_name \u003d obiect nou (); Numele pachetului. Software \u003d valoare; // punct notație_name_name ["proprietate"] \u003d valoare; // notație bazată pe

    Important: Este demn de remarcat faptul că este imposibil să se folosească o cifră ca valoare: myobg.rost \u003d 2 // nu poate! myobg.rost \u003d "2" // puteți

    Exemplu: Creați obiectul Mybrowser cu proprietățile de nume ) și versiunea (valoarea " 9.0 »)


    ✍ Soluția 1:

    vary mybrowser \u003d obiect nou (); mybrowser.name \u003d "Microsoft Internet Explorer."; Mybrowser [versiune"] \u003d "9.0";

Exemplu: Creați două obiecte de colectare (mașini și moto) cu proprietăți de culoare și brand. Afișați valoarea proprietății culoare La obiect mașină și proprietăți marca La obiect moto..


✍ Soluție:
    VAR auto \u003d obiect nou (); car.color \u003d "alb"; car.MaxSepeed \u003d 220; car.brand \u003d "Nissan"; Document.write ("Culoarea mașinii:" + car.color); VAR MOTO \u003d (Culoare: "albastru", cai putere: 130, Brand: "Yamaha"); Document.write ( "Producator de motociclete:" + Moto.brand);

    vAR auto \u003d obiect nou (); car.color \u003d "alb"; car.MaxSepeed \u003d 220; car.brand \u003d "Nissan"; Document.write ("Culoarea mașinii:" + car.color); VAR MOTO \u003d (Culoare: "albastru", cai putere: 130, Brand: "Yamaha"); Document.write ("Producator de motociclete:" + moto.brand);

Ciclul "pentru fiecare" pentru a lucra cu obiecte în JavaScript

Un pic despre acest design a fost deja spus.
Ciclul din JavaScript este proiectat să treacă prin matrice, colecții și obiecte.

Luați în considerare un exemplu de utilizare pentru:

1 2 3 4 5 6 7 8 vary mybrowser \u003d obiect nou (); mybrowser.name \u003d "Microsoft Internet Explorer"; Mybrowser ["versiunea"] \u003d "9.0"; Pentru (var A în Mybrowser) (Alert (A); // plimbă proprietățile obiectului Mybrowser. Scrieți numele, versiunea Alertă (mybrowser [a]); // dă valorile proprietăților }

vary mybrowser \u003d obiect nou (); mybrowser.name \u003d "Microsoft Internet Explorer"; Mybrowser ["versiunea"] \u003d "9.0"; Pentru (Alert (A); // șterge proprietățile obiectului Mybrowser. Nume, versiune Alertă (Mybrowser [A]); // Valori de proprietate emise)

  • Crearea claselor de constructori
  • Crearea claselor de constructori se efectuează în două etape:

    1. creează mai întâi o clasă folosind designerul;
    2. apoi este creat un nou obiect bazat pe constructor.

    Crearea unei clase de obiecte care utilizează un designer (crearea de cursuri-designeri):

    funcții_name_blass_name (SV-B1, SV-CO2) (thisv-b1 \u003d valoare; aceasta. Sb-c2 \u003d valoare;)

    Crearea unui obiect nou bazat pe clasa de obiect:

    var_ object_name \u003d New_name_name ("value_sv-vA1", "value_sv2");

    var name_name \u003d nou_name_name (); Nume_Name. MSB-B1 \u003d "VALOVE_SV-VA1"; _name_name.cv-in2 \u003d "value_sv-vA2";

    Numele clasei designerului este obișnuit să scrie din scrisoarea de capital!


    Luați în considerare un exemplu:

    Exemplu: Crearea unui constructor pentru clasa de obiect și crearea unui obiect bazat pe această clasă: Creați un obiect Mybrowser cu proprietăți de nume. "Microsoft Internet Explorer") și versiunea (valoarea " 9.0 »)

    Decizia deschisă

    1 2 3 4 5 6 7 8 Browserul funcției (nume, versiune) (numele .name \u003d nume; această .versiune \u003d versiune;) vary mybrowser \u003d nou browser ("Microsoft Internet Explorer", "9.0"); Alertă (mybrowser.name); Alertă (mybrowser.version);

    funcție Browser (Nume, versiune) (Name.Name \u003d Nume; this.version \u003d versiune;) var mybrowser \u003d nou browser ("Microsoft Internet Explorer", "9.0"); Alertă (mybrowser.name); Alertă (mybrowser.version);

    Deci, comparați din nou cu prima modalitate de a crea obiecte:

    // Obiect de colectare var mybrowser \u003d (Nume: "Microsoft Internet Explorer", versiunea: "7.0"); Alertă (mybrowser.name); Alertă (mybrowser.version); // linia următoare este inacceptabilă! Var Mybrowser1 \u003d New Mybrowser ("Mozillafirefox", "3.5"); // Neadevarat! !!

    Important: În cazul creării unei colecții de obiecte, nu puteți crea o clasă de excensare, deoarece aceasta nu este o clasă


    JS 6_1 Sarcina. Creați un angajat obiect, care conține informații despre angajații unor firme, cum ar fi numele, departamentul, telefonul, salariul (utilizați funcția de designer și cuvântul cheie al acestui lucru). Creați o instanță obiect

    Accesul la proprietățile obiectului în JavaScript

    Numele pachetului. Numele de calitate

    1 2 Agent007.miya \u003d "Bond"; Alertă (agent007.

    agent007.miya \u003d "Bond"; Alertă (agent007.

    Care este proprietatea implicită

    Funcția de designer vă permite să introduceți obiectul Obiect implicit. Aceste proprietăți vor fi fiecare instanță create a obiectului

    1 2 3 4 5 6 7 8 9 10 Funcție Student (nume, telefon) (acest nume \u003d nume; acest .phone \u003d "22-22-22"; // Proprietatea implicită! ) Var Ivanov \u003d noul student ("Ivan", "33-33-33"); Alertă (Ivanov.name); // Alertă emisă "Ivan" (Ivanov.phone); // va emite "22-22-22" Ivanov.phone \u003d "33-33-33"; // Modificați SV-in implicit Alertă (Ivanov.phone); // va da "33-33-33"

    funcția Student (nume, telefon) (nume.name \u003d nume, the.phone \u003d "22-22-22"; // proprietate implicită!) Var Ivanov \u003d noul student ("Ivan", "33-33-33") ; Alertă (Ivanov.name); // Alertă emisă "Ivan" (Ivanov.phone); // va emite "22-22-22" Ivanov.phone \u003d "33-33-33"; // Modificăm alerta implicită (Ivanov.phone); // va da "33-33-33"

    Adăugarea de proprietăți la clasa de obiecte

    Valoarea proprietății poate fi adăugată pentru:

    • instanța specifică a obiectului;
    • obiectul de clasă întreagă

    Adăugarea de proprietăți la beton (exemplu) Obiect:

    numele pachetului. Nume de calitate \u003d valoare

    ivanov.BIOLOGY \u003d "Excelent";

    Important: În exemplu, proprietatea este setată pentru un obiect specific și nu pentru clasa de obiect!

    Adăugarea de proprietăți la clasa Obiecte:

    nameklass.protype. Nume de calitate \u003d valoare

    Student.protype.biologia \u003d "Excelent";

    Important: În exemplu, proprietatea (implicit) este setată pentru clasa de obiect! Acest lucru se face folosind prototip; prototip- obiect care definește structura

    1 2 Student.protype.email \u003d " [E-mail protejat]"; Alertă (Ivanov.email); // Va emite " [E-mail protejat]"

    Student.protype.email \u003d " [E-mail protejat]"; Alertă (Ivanov.email); // emite" [E-mail protejat]"

    Exemplu: Un exemplu de ieșire a tuturor proprietăților unui obiect cu valori

    1 2 3 4 5 6 7 8 9 Var Summertour \u003d (Turcia: 2000, Spania: 3000, Egipt: 1000); Var optiune; Pentru (opțiunea în Summertour) (document.write (opțional + ":" + summertour [opțiune] + "
    " ) ; }

    var Summertour \u003d (Turcia: 2000, Spania: 3000, Egipt: 1000); Var optiune; Pentru (opțiunea în Summertour) (document.write (opțional + ":" + summertour + "
    "); }

    Prototipurile JavaScript (Introducere)

    Luați în considerare un exemplu despre modul în care sunt construite clasele JavaScript pe prototipuri

    Exemplu: Creați o mașină de clasă de obiecte (mașină) cu trei proprietăți: Nume (nume), model (model), culoare (culoare). Creați o instanță de clasă cu proprietăți specifice. Apoi, prin instanța creată adăugați la clasa Proprietarul proprietarului (proprietar) cu un sens implicit specific ( Ivanov.). Afișați toate valorile proprietăților instanței create

    Funcție mașină (nume, model, culoare) ( / * Designer de obiecte auto * / Acest .name \u003d nume; acest .Model \u003d model; acest .Color \u003d culoare; ) Var mycar \u003d mașină nouă; mycar.name \u003d "Mers"; Mycar.model \u003d "600"; Mycar.color \u003d "verde"; Car.protype .owner \u003d "Ivanov"; / * Adăugați o proprietate nouă * / Alertă (mycar.name + "" + mycar.model + "" + mycar.color + "" + mycar.owner);

    funcție mașină (nume, model, culoare) (/ * designer obiecte mașină * / acest.name \u003d nume; acest.model \u003d model; the.color \u003d culoare;) varycar \u003d noua mașină; mycar.name \u003d "Mers"; Mycar.model \u003d "600"; Mycar.color \u003d "verde"; Car.protype.owner \u003d "Ivanov"; / * Adăugați o proprietate nouă * / Alertă (Mycar.Name + "" + Mycar.Model + "" + Mycar.Color + "+ Mycar.owner);

    JS 6_2 Sarcina. Pentru a seta JS 6_1 prin intermediul angajatului Eccastern creat de obiectul angajatului, adăugați o nouă adresă de proprietate la clasa de obiect

    Metode JavaScript de obiecte

    Crearea unei metode de obiect

    Exemplu: Adăugați la metoda Constructorului Obiect Browser Desprebrowser, care va afișa informații despre proprietățile acestui obiect la ecranul browserului.

      1 2 3 4 5 6 7 8 9 10 11 12 13 Funcție Showbrowser () (document.write ("observator:" + acest nume + "" + acest .version);) browser de funcții (nume, versiune) (acest nume \u003d nume; această .versiune \u003d versiune; acest lucru. \u003d Showbrowser;) var mybrowser \u003d nou browser ("Microsoft Internet Explorer", 8.0); mybrowser.boutbrowser ();

      funcție Showbrowser () (Document.Write ("Observer:" + the.name + "" + this.version);) browser de funcții (nume, versiune) (denumit.name \u003d nume; this.version \u003d versiune; acest lucru.boutbrowser \u003d Showbrowser;) var mybrowser \u003d nou browser ("Microsoft Internet Explorer", 8.0); mybrowser.boutbrowser ();

    1. Metodele obiectului sunt create pe baza funcției și au fost adăugate la constructorul de clasă

    funcție browser (nume, versiune) (nume.name \u003d nume; thisvver \u003d versiune; this.boutbrowser \u003d function () (document.write (observator: "+ nume +" "versiune + versiune);))))) vary_browser \u003d Nou browser ("Microsoft Internet Explorer", 8.0); mybrowser.boutbrowser ();

    JS 6_3 Sarcina. Creați o clasă de obiecte (tur) pentru activitatea unei companii de turism cu metoda de numărare a costului unei călătorii pe baza: numărul omului * număr de zile * tariful țării. Creați o instanță a obiectului TurcyTour cu proprietăți. Afișați toate proprietățile unui obiect pe ecran. Calculul metodei obiectului Creați funcția bazată pe funcție.

    Prototipurile JavaScript (prototip) de obiecte încorporate

    Adăugarea de proprietăți și metode la obiecte încorporate (prototip)

    JavaScript.- limba OOP (programare orientată spre obiect) bazată pe prototipuri.
    Prototip - obiect care definește structura

    Luați în considerare munca cu prototipuri de exemplu:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 / * Modificarea prototipului * / // adăugarea proprietății implicite la obiectul încorporat Șir .protype .color \u003d "negru"; // adăugarea (modificarea) metodei la obiectul încorporat String .protype .Write \u003d StringWrite; Funcție StringWrite () (document.write (" "); document.write (acest lucru .TOSTRING ()); document.write (" ") ; } // utilizați clasa modificată Var s \u003d șir nou ("este un șir"); s.color \u003d "roșu"; s.write ();

    / * Modificați prototipul * / // Adăugarea proprietății implicite la obiectul încorporat String.protype.Color \u003d "negru" obiect; // adăugarea (modificarea) metodei la șirul încorporat.protype.write Object \u003d Switwrite; Funcție StringWrite () (document.write (" "); Document.write (thostring ()); document.write ("");) // Utilizați clasa modificată VAR S \u003d șirul nou (" este un șir "); s.color \u003d" roșu "; s.write ();

    Important: Obiectul matematic nu poate adăuga proprietăți și metode


    JS 6_4 Sarcina. Completați codul programului pentru a efectua sarcina: la metoda Clasa de String încorporată (), care afișează cuvântul "Ura!" Ca antet (TAG H ...) specificat de utilizatorul utilizatorului ().
    Nivelul antetului (1, 2 ... 6) poate fi adăugat ca proprietățile clasei de coarde.
    Amintiți-vă cum ar trebui să pară etichetele HEADLOV ca HTML:

    Titlu

    Cod complet:

    1 2 3 4 5 6 7 8 Șir .protype .uroven \u003d "1"; ... Funcție PrintZagolovok () (... ...) Var S \u003d Nou ...; ...

    String.protype.uroven \u003d "1"; ... Funcție PrintZagolovok () (... ...) Var S \u003d Nou ...; ...

    Rezumat: Comparați încă două opțiuni pentru utilizarea obiectelor de utilizator în JavaScript:

    1. Crearea de colecții
    2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 Var MyBook \u003d Obiect nou (); MyBook.TItle \u003d "(! Lang: carte" ; myBook.price = "200" ; alert(myBook[ "title" ] ) ; !} // prima opțiune Adăugați la proprietate alertă (Mecook.robrice); // A doua opțiune Adăugați la proprietăți Funcție MyBookshow () (pentru (VAR I în MyBook) (Document.Write (I + ":" + MyBook [i] + "
      " ) ; // proprietate mare )) MyBook.show \u003d MyBookshow; MyBook.show ();

      var MyBook \u003d Obiect nou (); MyBook.TItle \u003d "(! Lang: carte"; myBook.price="200"; alert(myBook["title"]); // 1-й вариант обращения к свойствам alert(meBook.price); // 2-й вариант обращения к свойствам function myBookShow() { for (var i in myBook) { document.write(i+": "+myBook[i]+"!}
      "); // proprietate mare)) myBook.show \u003d MyBookshow; MyBook.show ();

    3. Crearea claselor de constructori
    4. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 Funcție MyBook (titlu, preț) ( // Definiția proprietăților acest .Tle \u003d titlu; acest .Price \u003d preț; // definirea metodei acest .show \u003d arată; Spectacol de funcții () (document.write ("Titlu:" + acest .title); document.write ("Pret:" + acest .price);)) Var Carte \u003d New MyBook ("Cartea", 200); Carte.show ();

      funcție MyBook (titlu, preț) (// definiția proprietăților acestui.title \u003d titlu; acest.price \u003d preț; // Definiție this.show \u003d metoda de afișare; funcția show () (document.write ("Titlu:" + acest lucru. Titlu); Document.Write ("Preț:" + this.price);))))))))). VAR CARK \u003d New MyBook ("Cartea", 200); Carte.show ();\u003e Mergi la pagina principală, mergi la pagina de început</ A\u003e. <li\u003e ... </ Li\u003e <li\u003e ... </ Li\u003e

    5. Mergi la pagina principală, mergi la pagina de început
    6. ...
    7. ...
    8. * Complicat: Numărul de elemente de meniu, numele lor și uRL. trebuie să solicitați un utilizator

      Bacsis:pentru a afișa în rândurile Show (), utilizați metoda Document.Write ()

      Locația JavaScript, Navigator, obiecte de ecran

      JavaScript navigator

      Luați în considerare utilizarea obiectului Navigator în JavaScript pe exemplul:

      Exemplu: Scrieți o caracteristică care afișează:

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Var optiune; // ieșirea tuturor proprietăților obiectului Navigator Pentru (opțiunea în Navigator) (document.write (opțional + ":" + navigator [opțiune] + "
    " ) ; } // Funcția proprietăților specifice ale obiectului Navigator Funcția FoundeDetails () (document.write ( "

    Nume browser: "
    + Navigator.Userragent + "
    "); document.write (" Limba browserului: "+ navigator.language +"
    "); document.write (" numele OS: "+ navigator.ocpu +"
    "); document.write ( "Sunt cookie-uri incluse:" + Navigator.cookieenabled + "
    "); document.write ( "Este conectat Internetul:" + Navigator.Nline + "
    ");) Folosite ();

    var optiune; // încheierea tuturor proprietăților navigatorului pentru obiect (opțiune în navigator) (document.write (opțional + ":" + navigator + "
    ");) // Funcția proprietăților specifice ale funcției Navigator ObsertETALS Object () (Document.Write ("

    Nume browser: "+ navigator.Userragent +"
    "); document.write (" Limba browserului: "+ navigator.language +"
    "); document.write (" numele OS: "+ navigator.ocpu +"
    "); Document.write (" sunt cookie-uri incluse: "+ navigator.cookieenabled +"
    "); Document.write (" este conectat la internet: "+ navigator.nline +"
    ");) Folosite ();

    Ecranul obiectului JavaScript.

    Luați în considerare utilizarea obiectului de ecran în JavaScript pe exemplul:

    funcție FoundeDetails () (document.write ("Rezoluție:" + ecran.width + "x" + ecran.height + "
    "); document.write (" adâncimea de culoare: "+ ecran.colordpth +" x "+ ecran.height +"
    ");) Folosite ();

    JavaScript Locație Obiect.

    Luați în considerare utilizarea obiectului de locație în JavaScript pe exemplul:

    1 2 3 4 Funcția FoundeDetails () (document.write ( "Adresa paginii încărcate:" + locație.href + "
    ");) Folosite ();

    funcție FoundeDetails () (document.write ("Adresa descărcată pagină:" + locație.href + "
    ");) Folosite ();

    Concluzii:

    • Folosind expresii cu noul cuvânt cheie, puteți crea cazuri de obiecte, adică încarnările lor specifice.
    • Mai mult, datorită proprietății prototipului JavaScript, aveți posibilitatea de a adăuga noi proprietăți și metode inventate de utilizator și lipsesc în obiecte încorporate sursă.
    • Crearea obiectelor poate fi utilizată pentru a crea baze de date.

    In acest capitol:

    În JavaScript există o serie de obiecte predefinite care pot fi utilizate atunci când scrieți scripturi. Acestea includ obiecte cum ar fi matrice, boolean, data, funcția, matematica, numărul, regexp și șir, precum și obiectul primitiv obiect. ÎN versiuni timpurii Limba documentului a fost inclusă și în IT (fereastră, document), dar acum sunt excluse din kernel. limba JavaScript.și să se refere la definiția modelului obiect al documentului (DOM), care va fi discutat mai târziu. Cu toate acestea, unele proprietăți ale acestor obiecte (document și fereastră) sunt deja familiare pentru noi.

    Cu toate acestea, înapoi la obiectele JavaScript încorporate din conceptul contemporan.. Toate obiectele încorporate, cu excepția matematicii și datei, au proprietăți precum constructorul și prototipul. Acestea sunt utilizate pentru a adăuga noi proprietăți obiectelor existente și sunt descrise în contextul obiectului funcției.

    Obiect obiect

    Toate obiectele de limbă JavaScript sunt moștenitorii obiectului obiect. În consecință, toate proprietățile și metodele acestui obiect sunt de asemenea disponibile din orice alt obiect JavaScript.

    Obiectul este definit doar 2 proprietăți - constructor și prototip. Proprietatea constructorului determină funcția care creează prototipul obiectului - este întreaga funcție a întregii funcții, și nu numai numele său. Cu alte cuvinte, luăm în considerare opțiunea atunci când se definește un obiect de testare și este creată o instanță a acestui obiect TMP:

    Test de funcții (versiune) (thomversion \u003d versiune;) TMP \u003d noul test (1);

    Într-un astfel de caz, folosind proprietatea constructorului, puteți vedea codul sursă al obiectului de testare (figura 4.6):

    Alertă (tmp.constructor);

    Smochin. 4.6.

    Cu toate acestea, pentru această proprietate există o limită: Nu poate afișa codul obiectelor lingvistice JavaScript încorporat: În astfel de cazuri, informațiile de ieșire sunt limitate de numele funcției prototip și a șirului "".

    În ceea ce privește proprietatea prototipului, vă permite să accesați funcția prototip a obiectului curent. Utilizarea acestei proprietăți face posibilă modificarea caracteristicilor prototipului obiectului. De exemplu, puteți adăuga o proprietate nouă pentru obiectul tip de testare utilizând proprietatea prototipului:

    Test.protype.comment \u003d "Comentariu nou de proprietate";

    Acum toate obiectele de testare de tip, inclusiv instanța TMP deja creată, vor avea proprietatea de comentarii, care este ușor să se asigure că aplicarea unei astfel de inspecții:

    Alertă (tmp.com);

    În plus, obiectele JavaScript încorporate sunt, de asemenea, lăsate să facă upgrade. De exemplu, dacă trebuie să adăugăm la matricea unei astfel de proprietăți ca o descriere, atunci puteți face acest lucru (desigur, numai în cadrul scriptului actual!), Referindu-se la prototipul obiectului de matrice și adăugarea corespunzătoare proprietate la aceasta:

    Array.protype.description \u003d "";

    În ceea ce privește metodele, există mai multe dintre ele pentru obiectul obiect - până la 5 bucăți. Acest lucru este tosource, tostring, ceas, neplăcut și valoare, lor scurta descriere Situat în Tabelul 4.10.

    Metodele de tostring și de valoare sunt aplicabile aproape tuturor obiectelor JavaScript încorporate, iar, de regulă, sunt invocate automat de către interpret atunci când necesitatea este convertită. În ceea ce privește metoda tosource, ea, de fapt, pur și simplu îndeplinește locul de muncă pentru proprietatea construcțiilor.

    Metodele rămase de ceas și metode de desfacere - expansiuni de marcă introduse în browserul Netscape 4 (sunt acum acceptate de Mozilla), sunt concepute pentru a depana scenarii. Întrucât în \u200b\u200bcadrul acestei publicații, problema programelor de depanare nu este luată în considerare, atunci nu are sens să descriem aceste metode. Dar, doar în cazul în care puteți lua o notă că în maimuța de mare (dar nu în browserul Firefox) există un depanger de scenariu - JavaScript Debugger.

    Obiecte de obiecte.

    Variabilele masive conțin seturi comandate de valori, pentru confortul prezentat sub forma unei variabile. Ne-am confruntat deja mai mult decât o dată (amintiți-vă cel puțin argumentele de argumentare), acum este timpul să ne ocupăm de toate proprietățile și complicațiile de aplicare.

    Spre deosebire de alte limbi de programare, JavaScript nu are acest tip de date ca o matrice. Dar această restricție se datorează faptului că este posibil să se utilizeze un obiect de matrice predefinit. Pentru a crea o matrice de obiect, puteți utiliza una dintre următoarele opțiuni de sintaxă:

    NameMassiva \u003d Noua matrice (Element1, Element2, ... Element) NameMassiva \u003d Noua matrice (Lensage)

    În primul caz, toate componentele matricei sunt enumerate, în al doilea - indică pur și simplu numărul de elemente. De asemenea, este permis să se utilizeze literali atunci când se declară o matrice:

    Calculatoare \u003d ["PC", "Mac", "Soare"];

    Pentru a umple elementele unei matrice prin valori, ca în general, un indice de element poate fi utilizat pentru a umple elementele. Ar trebui să se țină cont de faptul că indicele elementelor matricei începe cu zeroul:

    Var culori \u003d matrice noi (3); culori \u003d "roșu"; Culori \u003d "albastru"; culori \u003d "verde";

    Destul de des, este convenabil să folosiți posibilitatea de a umple matricea direct atunci când un anunț prin limba oferită de limba JavaScript.

    Var culori \u003d matrice noi ("roșu", "albastru", "verde");

    Pentru a afla lungimea matricei (numărul de elemente din care constă matricea), utilizați proprietatea de lungime:

    Var numscolors \u003d culori. Lungime;

    În plus față de proprietățile de lungime, JavaScript oferă, de asemenea, o serie de alte proprietăți și metode de lucru cu matrice. În particular, proprietățile obiectului de matrice, în plus față de lungime, includ universal pentru toate obiectele constructor și prototip, precum și destinate utilizării unor matrice împreună cu expresii regulate ale indicelui și proprietățile de intrare.

    În ceea ce privește metodele, în plus față de tosource standard, tostring și valoare, arrays sunt dotate cu încă zece proprietăți enumerate în tabelul 4.11.

    Tabelul 4.11. Metode ale obiectului de matrice
    MetodăDescriere
    concad.Combină două matrice și returnează un nou
    a te alatura.Combină toate elementele unei matrice într-o singură linie
    popElimină ultimul element de la matrice și se întoarce
    apăsați.Adaugă unul sau mai multe elemente până la capătul matricei și returnează o nouă lungime.
    versoMută \u200b\u200belementele matricei astfel încât prima să devină ultima, și viceversa
    schimb.Îndepărtează primul element al matricei și returnează-l
    felie.Îndepărtează o parte a elementelor de matrice și returnează o nouă matrice
    lIPITURĂAdaugă și (sau) elimină un element din matrice
    fel.Sortează elementele alfabetului de matrice
    dezactivat.Adaugă unul sau mai multe elemente la începutul matricei și returnează o nouă lungime a matricei (în MSIE 5.5 și 6 Această metodă nu returnează nimic)

    Luați în considerare câteva metode în detaliu. Deci, folosind metoda concate, puteți combina 2 matrice într-una:

    Var a \u003d matrice noi ("A1", "A2"); var b \u003d o nouă matrice ("B1", "B2"); var ab \u003d a.concat (b);

    Aici, variabila AB va deveni o matrice care conține toate cele 4 elemente de două matrice lipite. Dacă acum la această matrice pentru a aplica metoda de conectare, atunci rezultatul va fi un șir care conține toate elementele acestei matrice enumerate prin virgulă:

    Str \u003d ab.join (); // primiți str \u003d "A1, A2, B1, B2"

    În ceea ce privește metoda POP, apoi aplicați-o la aceeași matrice, vom primi un răspuns în "B2", iar matricea va fi tăiată la trei prime valori. Și metoda de schimbare, dimpotrivă, returnează primul element (în cazul nostru, "A1") și face același lucru cu o matrice cu singura diferență pe care elementele rămase avansează.

    Pentru a înțelege mai bine modul în care aceste metode și alte metode lucrează cu matrice, ne întoarcem la exemplul următor prezentat în listarea 4.3.

    Listarea 4.3. Lucrul cu arrays.

    Același exemplu poate fi vizualizat în fișierul Array.html, puteți vizualiza toate rezultatele lucrărilor sale din browser (vezi figura 4.7).

    Smochin. 4.7. Rezultatul aplicării metodei de îmbinare: matrice de întoarcere și schimbare

    Arrays poate fi, de asemenea, multidimensională, adică Un element al matricei poate fi o altă matrice. În acest caz, următoarea sintaxă este utilizată pentru a se referi la elementul de matrice:

    Array2d \u003d "element 0,0" array2d \u003d "element 0.1" ... array2d [n] [n] \u003d "element n, n"

    Un exemplu de umplere și ieșire a unei matrice bidimensionale poate fi găsit în fișierul Array.html, există, de asemenea, un exemplu interactiv pentru aproape toate metodele matricei.

    Obiect boolean.

    Obiect boolean - coajă pentru tipul de date cu același nume. Pentru a determina tipul de obiect boolean, se utilizează următoarea sintaxă:

    Booleanobj \u003d nou boolean (valoare)

    Aici valoarea este o expresie de inițializare care, dacă este necesar, va fi dată adevărată sau falsă. Dacă specificați o astfel de valoare ca 0, , fals, nan, nedefinit sau un șir gol, atunci rezultatul inițializării tipului de obiect boolean va fi fals, și în cazul oricărei alte valori - Adevărat.

    Nu confundați valorile logice primitive ale adevăratei și false cu tipurile de date adevărate și obiectele false ale obiectului boolean. De exemplu, dacă declarați variabila x și atribuiți valoarea obiectului boolean, inițializată folosind valoarea falsă, aceasta va fi în continuare valoarea adevărului (adevărat):

    X \u003d nou boolean (fals); // Când se compară dacă (x) suntem adevărați

    În același timp, dacă atribuiți pur și simplu variabila tipului de date de date falsă, atunci îl va primi:

    X \u003d false; // Când se compară dacă (x) suntem falsi

    În ceea ce privește utilizarea acestui obiect, în practică, acesta poate fi utilizat ca o funcție pentru a converti valorile oricăror alte tipuri la Boolean:

    A \u003d 100; x \u003d boolean (A); // x va primi adevărate dacă (x) (...)

    Dar, de fapt, cu greu, puteți să o faceți, deoarece, dacă este necesar, astfel de conversii sunt făcute automat de interpretul JavaScript - în exemplul, ar fi posibil să scrieți imediat "dacă (a) ...", iar transformarea necesară În acest caz se va face oricum.

    Data obiectului.

    Pentru a lucra cu datele din limba JavaScript, nu este prevăzută pentru un tip special de date, totuși, ca în cazul aricii, există un obiect de date special. Pentru a crea data datei, puteți utiliza oricare dintre următoarele moduri:

    Data nouă () Noua dată (milisecundă) Data nouă ("date_v_vid_stalk")

    În primul caz, obiectul de dată este creat cu ora actuală, în al doilea - ar trebui să fie indicat de numărul de milisecunde care au trecut de la 1 ianuarie 1970. Dacă data este specificată sub forma unui șir, atunci trebuie să fie tipul "28 februarie 2005". De asemenea, este permisă stabilirea unei date utilizând valori întregi pentru anul, lună, zi, etc.:

    Noua dată (an, lună, zi [, oră, minut, al doilea, milisecundă])

    Desigur, în acest caz, specificația de secunde și milisecunde pot fi evitate, mai ales că milisecundele nu au fost chiar sprijinite în versiunile vechi ale browserelor. În plus, în JavaScript la versiunea 1.3, datele mai devreme nu sunt acceptate la 1 ianuarie 1970. În ceea ce privește formatul valorilor, care indică linia, atunci anul este orice număr de 4 cifre (dacă specificați o cifră de 2 cifre, atunci va adăuga 1900 la acesta), numărul lunii - de la 0 (ianuarie) la 11 (Decembrie), iar ziua - 0 până la 31. În consecință, valorile de timp sunt, de asemenea, limitate: timp de ore va fi un întreg de la 0 la 23, pentru secunde și minute - de la 0 la 59 și pentru milisecunde - de la 0 până la 999. Deci, deoarece valoarea datei de tip obiect indică 9 mai 2005, ar trebui să scrieți:

    VaD Anyday \u003d Noua dată (2005, 5, 9);

    Și dacă aveți nevoie să obțineți data și valoarea curentă, atunci nu sunt necesare parametri:

    Var acum \u003d noua dată ();

    Începând cu JavaScript 1.3, intervalul de date poate fi localizat în termen de 100 de milioane de zile înainte și după 01/01/1970 (în total este de aproape 550 mii de ani!). În aceeași versiune, cerința a apărut întotdeauna să indice un an într-un format de patru cifre, pentru a evita erorile legate de schimbarea secolelor.

    Pentru a lucra cu obiectul de dată, există 2 proprietăți - constructor și prototip, precum și multe metode care vă permit să evidențieți partea dorită a datei (an, lună, număr, timp), ieșire într-un format sau alt format, etc. Toate sunt enumerate în tabelul 4.12.

    Tabelul 4.12. Metode ale obiectului datei
    Metodă și sintaxa saDescriere
    getdate ()Returnează ziua lunii în ora locală
    gETADAY ()Returnează ziua săptămânii în ora locală
    gădurea ()Returnează anul în ora locală
    getours ()Returnează ora curentă (ceasul) în ora locală
    getmiliseconds ()Returnează ora curentă (milisecundă) în ora locală
    getMinutes ()Returnează ora curentă (minute) în ora locală
    getmonth ()Returnează ora curentă (luna) în ora locală
    getSeconds ()Returnează ora curentă (secunde) în ora locală
    fă-ți timp ()Returnează ora curentă sub forma unui număr în ora locală
    gettimezoneoffset ()Returnează deplasarea timpului în câteva minute în ceea ce privește timpul Greenwich în ora locală
    getutcdate ()Returnează ziua lunii în timpul universal
    getUtutday ()Returnează ziua săptămânii în timpul universal
    getuttuciaear ()Returnează un an în timp universal
    getutchours ()Returnează ora curentă (ceasul) în timpul universal
    getutcmiliseconds ()Returnează ora curentă (milisecunde) în timpul universal
    getutcminutes ()Returnează ora curentă (minute) în timpul universal
    getutcmonth ()Returnează ora curentă (luna) în timpul universal
    getutcseconds ()Returnează ora curentă (secunde) în timpul universal
    getyear ()Depășită. Returnează anul într-un format scurt (două cifre) în timpul universal
    parse (line_dates)Returnează numărul de milisecunde care au trecut de la 1 ianuarie 1970 la valoarea specificată în parametrul în ora locală
    setdate (zi)Stabilește ziua lunii în ora locală
    plecare (an)Stabilește anul în ora locală
    sethurs (ceas)Setează timpul (ceasul) în ora locală
    setmilisecunde (milisecunde)Setează timpul (milisecundă) în ora locală
    setminute (minute)Setează timpul (minute) în ora locală
    setmonth (luna)Setează timpul (luna) în ora locală
    setSecunde (secunde)Setează timpul (secunde) în ora locală
    settime (milisecunde)Stabilește timpul în milisecunde pentru o anumită dată în ora locală
    setUtCdate (zi)Stabilește ziua lunii în timpul universal
    setucivatar (an)Stabilește anul în timp universal
    setutchours (ceas)Setează timpul (ceasul) în timpul universal
    SetUtCmiliseconds (milisecunde)Setează timpul (milisecunde) în timpul universal
    setUtCminutes (minute)Setează timpul (minute) în timpul universal
    setUtCmonth (luna)Setează timpul (luna) în timpul universal
    sETUCSECONDS (secunde)Setează timpul (secunde) în timpul universal
    setyear (an)Depășită. Stabilește anul în ora locală, ca valoare a anului, să spunem un format de două cifre
    togmtstring ()Depășită. Convertiți data la un șir corespunzător timpului Greenwich
    tolocalestring ()Returnează data și ora sub forma unui șir corespunzător formatului instalațiilor sistemului local
    tolocalateatestring ()Returnează data sub forma unui șir corespunzător formatului instalațiilor sistemului local
    toloocaletimestring ()Returnează timpul sub forma unui șir corespunzător formatului instalărilor sistemului local
    la sursa ()Returnează data obiectului în vizualizarea literală
    tostring ()Returnează obiectul de dată în vizualizarea liniei
    tUTCString ()Convertiți data la un șir într-un format corespunzător timpului universal
    UTC (parametri)Returnează numărul de milisecunde care au trecut din 1 ianuarie 1970 în timp universal. Ca parametri indică un an, lună și zi, precum și (opțional) - ore, minute, secunde și milisecunde
    valoarea ()Returnează data sub forma unei valori primitive

    În ciuda unei astfel de abundențe de metode, este suficient să lucrați cu obiectul de dată: trebuie să înțelegeți numai principiul numelor de metode:

    • metodele începând cu "set" sunt concepute pentru a seta obiectele de dată și ora în data de date;
    • metodele începând cu "GET" sunt concepute pentru a extrage data, ora sau părțile acestora de la data obiectelor;
    • metodele începând cu "pentru a" întoarce data și ora (sau părțile lor) sub formă de valori de șir;
    • metodele care conțin "UTC" diferă de la fel de asemănătoare cu faptul că acestea funcționează cu un format de timp universal (adică Timpul în funcție de Greenwich, luând în considerare compensarea față de fusul orar curent).

    Astfel, rămâne doar pentru a adăuga la numele de obținere sau setare partea necesară a datei sau a timpului pentru a obține sau instala parametrul dorit, dacă este necesar, folosind UTC. Ei bine, când este necesar să obțineți rezultatul în formularul "uman", utilizați metode la. De asemenea, trebuie să vă amintiți că numai funcțiile de format integral ar trebui să fie întotdeauna folosite pentru a lucra cu anul (adică împreună sau getuttucleear, nu getyear).

    O vedere a șirului de la data de JavaScript are următorul format:

    Double Luna Numar Watch: minute: secunde GMT ± Offset

    Pentru a vedea vizual vizionarea datelor și, în același timp, și considerați cum funcționează ca o tostring, luați în considerare ceea ce toți se întorc la concluzia. În același timp, primul lucru care poate veni în minte pentru a vedea lucrarea unei funcții este de a utiliza ieșirea textului în document:

    Document.writeln (dateOmbject.tostring ()); Document.writeln (dateObject.togmtting ()); // etc.

    Dar, de fapt, deoarece există multe funcții, ar fi bine să scrieți bine că acțiunea a fost efectuată:

    Document.writeln ("dateOmbject.tostring ()" + dateOmbject.tostring ());

    Și acum ne vom gândi la câte linii dorim să ne retragem în așa fel. Luați în considerare chiar și capacitățile metodei "Copiere și inserare" susținute de toate editori de textAcest lucru nu va asigura greșelile ca acesta:

    Document.writeln ("dateObject.tolocalestring ()" + dateObject.tostring ());

    Dar, pe măsură ce citește IBM Motto, oamenii ar trebui să gândească, iar mașinile funcționează. Deci, credem cum să facem munca calculatorului, în același timp să vă jefuiți de nevoia de a introduce octeți suplimentari ai codului, pentru care ne întoarcem la listare 4.4.

    Listarea 4.4. Producția de diferite tipuri de date și funcție EVAL

    Metode ale obiectului datei

    În primul rând, definește caracteristica PrintDate, care, de fapt, afișează data într-o singură formă sau alta. Mai degrabă, afișează data în cazul nostru, dar, în principiu, poate emite orice - principalul lucru este că argumentul care o face completă de fragmentul de cod JavaScript. În același timp, codul este afișat ca (adică, variabila rândului este tipărită în forma originală) și apoi rezultatul de execuție este afișat, pentru care se utilizează funcția Eval. Ca urmare, scrierea acestei funcții o dată, în viitor, în viitor, în cursul întregului document, contactați-l, după ce a jefuit de nevoia de a introduce aproape același text de două ori.

    După funcția de ieșire, crearea unui obiect de tip de tip, care este alocat la 2005, 3 luni (aprilie, pentru că ianuarie - zero), 1 număr, 14 ore, 30 de minute, 45 de secunde. Apoi, documentul se deschide și funcția PrintDate pentru 6 metode diferite de obiect de dată este numită secvențial. Rezultatul acestui scenariu va fi de 6 linii care conțin perechi de valori din metodă și rezultatul funcționării sale separate prin colon (figura 4.8).

    Smochin. 4.8. Retragerea aceleiași date prin diverse metode

    Trebuie remarcat faptul că metoda tosource care afișează data prezentării interne a programului este acceptată numai de browserele Mozilla. În plus, formatul de ieșire a datelor de toate celelalte metode poate fi, de asemenea, oarecum diferit în diferite browsere. Puteți descărca un astfel de exemplu la diferite programe de vizualizare și să vedeți în mod independent ceea ce sunt emise (dosarul date.html).

    Obiect

    Un obiect de funcție predefinit determină șirul de cod către JavaScript, care ar trebui să fie executat ca o funcție. Pentru a declara obiectul funcției, utilizează următoarea sintaxă:

    Nume Funcție \u003d Funcție nouă ([argument1, argument2, ... argument], blufundație)

    În acest caz, numele oricărei variabile poate fi utilizat ca nume de funcție sau proprietatea unui obiect existent. De asemenea, este posibilă specificarea unei funcții de tip obiect ca valoare pentru un manipulator de evenimente obiect. Să presupunem că dacă vrem să facem propriul dvs. de tip Handler de tip "Document complet de download" (document.onload), putem scrie astfel:

    Document.onload \u003d Funcție nouă ([argument1, ... argument], buloffuncțional);

    Argumentele în acest caz sunt parametrii transmise funcțiilor, dar corpul funcției este codul real care trebuie completat la accesarea acestei funcții de obiect. De exemplu, puteți scrie această opțiune a unui obiect care va fi folosit pentru a construi un număr într-un pătrat:

    Var Squendobj \u003d Funcție nouă ("X", "Return x * x");

    Aici Squendobj este numele variabilei, X este argumentul primit și "întoarcerea x * x" este corpul funcției. Acordați atenție faptului că nu numai funcția corpului, dar argumentele luate la acesta sunt închise în citate, precum și numele tipului de obiect, așa cum este obișnuit în JavaScript, este scris cu o literă de capital (funcție).

    Utilizarea variabilelor create de această metodă este similară cu utilizarea variabilelor oricărei alte tipuri:

    Var a \u003d 5 + Squendobj (2); // primiți 9.

    De fapt, obiectul de tip obiect poate fi întotdeauna reprezentat ca o funcție convențională anunțată cu cuvinte cheie Funcţie. Deci, aceeași erecție în gradul al doilea poate fi descrisă după cum urmează:

    Funcția pătrată (x) (retur x * x;)

    În consecință, și utilizați funcția declarată prin această metodă (în acest caz, este funcția în forma "curată" și nu în procedura), în același mod:

    Var a \u003d 5 + pătratfunc (2); // obțineți de asemenea 9

    Astfel, atribuirea valorii variabile ca funcție utilizând obiectul funcției este o declarație similară a funcției ca atare. Dar, în același timp, aceste abordări au, de asemenea, diferența: dacă Squendobj este o variabilă, valoarea căreia este o referință la un obiect creat folosind obiectul funcției, apoi SquareFunc este numele funcției. În consecință, atunci când se execută programul, se comportă, de asemenea, în mod diferit: pentru un tip de obiect, funcția de interpretare ori de câte ori caderile variabile (în cazul nostru - Squendobj) va evalua pe deplin întregul cod al funcției și pentru funcțiile declarate prin metoda obișnuită, codul este estimat numai la primul pasaj. Această diferență poate fi non-profit dacă funcția îndeplinește un loc de muncă unică, totuși, utilizarea variabilelor bazate pe obiectul funcției reduce semnificativ performanța programului în cicluri. Prin urmare, în practică, utilizarea obiectelor obiect este o raritate, dar, totuși, uneori pot fi convenabili, de exemplu, pentru a adăuga metode la alte obiecte.

    Obiectul funcției are proprietăți de constructor standard și prototip pentru JavaScript, precum și un număr propriu:

    Argumentele - o matrice corespunzătoare parametrilor argumentelor.callee - corespunde funcției corpului. argumente.caller (învechite) - indică numele funcției din care au avut loc apelurile obiectului; Argumente.Lend - indică numărul de parametri de funcții. Lungime - indică numărul de argumente așteptate de funcția (și nu la numărul primit de sosirea lor, ca în cazul argumentului. Lungime);

    ATENŢIE
    Toate proprietățile argumentelor pot fi vizibile numai "din interiorul" funcției și, începând cu JavaScript 1.4, argumentele nu mai sunt o proprietate a obiectului funcției, dar este o variabilă locală independentă prezentă implicit în orice funcție. De fapt, doar 1 proprietate proprie Rămășițe pentru funcția - lungime.

    În plus față de proprietăți, obiectul funcției are mai multe metode. Astfel, metoda Aplicare vă permite să aplicați metoda unui obiect la altul, iar metoda de apel solicită metoda unui alt obiect în contextul celui actual. Din păcate, implementarea acestor metode în practică lasă în mod clar mult de dorit. Deci, rămâne doar să menționez standardul pentru metodele JavaScript Tostring, Tosource și ValoriOf, disponibile, precum și obiectul funcției.

    Obiect matematică.

    Math este obiectul lingvistic JavaScript încorporat, care are constante matematice de bază și funcții ca metode și proprietăți. De exemplu, proprietatea matematică PI conține valoarea numărului PI (π), care este de aproximativ 3.1416, iar metoda păcatului returnează sinusul numărului specificat.

    În plus față de numărul π, obiectul matematic are următoarele proprietăți:

    • E - baza logaritmilor naturali (aproximativ 2.718)
    • LN10 - Logaritmul natural 10 (aproximativ 2.302)
    • LN2 - Logaritmul natural 2 (aproximativ 0,693)
    • Log10e - Logaritmul zecimal E (aproximativ 0.434)
    • Log2E - logaritmul binar E (aproximativ 1,442)
    • Sqrt1_2 - rădăcină pătrată De 0,5 (aproximativ 0,707)
    • SQRT2 - rădăcină pătrată de 2 (aproximativ 1,414)

    Deoarece toate proprietățile obiectului matematic sunt constante predeterminate, apoi creează alte obiecte matematice nu numai că nu sunt necesare, ci și inacceptabile, dar este întotdeauna necesar să le accesați în același mod, de exemplu:

    Var chendin lungime \u003d diametru * matemath.pi;

    În plus față de proprietăți, metodele corespunzătoare principalelor funcții matematice sunt de asemenea definite pentru obiectul matematic. Toate acestea sunt enumerate în Tabelul 4.13.

    Tabelul 4.13. JavaScript metode matematice
    Metodă și sintaxa saDescriere
    aBS (număr)Returnează valoarea absolută a argumentului
    atan2 (Y, X)Returnează un număr în intervalul de la -? Până la?, Reprezentând un unghi (în radiani) între axa x și punctul (x, y). Rețineți că primul argument este coordonata Y
    exp (număr)Returnează E în măsura specificată (logaritmul exponențial)
    ceil (număr), podea (număr)Returnează o valoare care este cel mai apropiat (cel mai mic) sau mai mic (podea) integer
    min (numărul1, numărul2), max (numărul1, numărul2)Returnați un număr mai mic (min) sau mai mare (maxim) de două argumente comparate
    păcat (număr), cos (număr), bronz (număr), ASIN (număr), acos (număr), Atan (număr)Returnați rezultatul executării funcțiilor trigonometrice standard - sinus, cosin, tangent, arcsinus, arcsinus și arcttangent
    pow (bază, expozant)Returnează baza la expoziție
    aleatoriu ()Returnează un număr pseudo-aleatoriu de la 0 la 1
    rundă (număr)Returnează valoarea, rotunjită la cel mai apropiat întreg
    sqrt (număr)Returnează rădăcina pătrată a numărului

    Ca și în cazul proprietăților, utilizarea metodelor de obiecte matematice, trebuie să vă referiți direct la obiectul în sine și nu pe copii. De exemplu, scriem o funcție care va returna diametrul pe baza zonei lor de cerc:

    Funcția circulediam (pătrat) (Radius \u003d Math.SQRT (pătrat / matematică.pi);)

    Pentru a profita de ea în practică, puteți recurge la ajutorul metodelor prompte și de alertă:

    Var sq \u003d prompt ("enter zona", 1); Var di \u003d circlediam (sq); Alertă ("Diametrul cercului:" + DI);

    Lucrarea acestor și a altor metode ale obiectului matematic poate fi vizualizată în fișierul Math.html.

    Numărul de obiect

    Obiectul numeric este o reprezentare a obiectelor de tipuri numerice simple. Are proprietăți speciale pentru constante numerice - cum ar fi "numărul maxim", "nu numărul" și "infinit". Pentru a crea un număr de tip obiect nou, utilizați următoarea sintaxă:

    NUMAR NOU

    În practică, utilizarea instalației numerice este cel mai adesea redusă la utilizarea constantelor sale atunci când verificați argumentele la erorile de validare și urmărire. De exemplu, pentru a verifica dacă valoarea este variabilă sau nu, această metodă poate fi utilizată:

    Dacă (x! \u003d Număr.nan);

    În acest caz, starea va fi adevărată dacă variabila X conține un număr deoarece este comparată cu o valoare specială - Nan, adică "Non-Număr". În plus față de Nan, pot fi utilizate alte valori speciale - toate acestea sunt proprietățile obiectului numeric:

    • Max_value - număr maxim posibil
    • Min_Value - număr minim posibil
    • NAN - nu este un număr (nu un număr)
    • Negativ_infinity - "infinit negativ", o valoare specială returnată în caz de depășire
    • Pozitiv_infinity - "infinit pozitiv", o valoare specială returnată în caz de depășire

    Toate aceste proprietăți sunt constante, astfel încât să le folosiți pentru a crea un număr de tip de obiect nou nu este necesar. În plus față de următoarele proprietăți, numărul definește, de asemenea, aceleași proprietăți standard ale constructorului și prototipului

    În plus față de proprietăți, obiectul numar, desigur, are metode. Pe lângă metode standard Tosource, Tostring și Valori, în JavaScript 1.5 Există 3 numere noi - ToXponențiale, TOFIXED și TOPRECISION. Toate acestea sunt destinate să transforme numerele în rânduri bazate pe un format. Astfel, metoda toexponențială convertește un număr într-un șir sub forma unui număr cu un exponent, metoda tofixată este într-un șir care conține un număr cu un număr fix de punct și virgulă, iar metoda toprecision utilizează una dintre aceste metode, în funcție de numărul și numărul selectat de caractere.

    Explorăm cu aceste metode în detaliu, pentru care considerăm sintaxa lor:

    Metodă ([număr))

    Evident, pentru toate metodele, numărul de semne indică numărul de punct și virgulă, dar dacă pentru metoda implicită tofixată (adică, dacă nu este specificată nimic) va fi 0, atunci pentru TEXPONENȚIAL și TOPRECISION - numărul de caractere necesare pentru ieșire a numărului este complet. Pentru a face mai bine munca și diferențele dintre toate aceste metode, ia în considerare pe exemplul de listare 4.5:

    Listarea 4.5. Metode texponente, tofectate și toprecision

    Metode de număr de obiect

    Aici, din nou, (ca în listarea 4.4), a profitat de funcția cu expresia, iar apoi rezultatul interpretării sale, numit doar în acest caz, printnumber. Următoarele ar trebui să fie numele variabilei pe care vor fi efectuate calculele. În acest caz, am declarat-o ca un obiect de tip de tip, deși, de fapt, ar fi posibil să ne limităm la declarația simplă a variabilei (X \u003d 12.45678). În cele din urmă, documentul se deschide pentru înregistrare și afișează mai întâi valoarea variabilei x fără transformări explicite (dar deja știm că, de fapt, metoda de tostring () este utilizată automat aici, după care toate cele trei metode studiate sunt numite mai întâi fără a specifica Semnele numerelor și apoi cu parametrii 2 și 4. Rezultatul acestui scenariu va fi de 10 linii care conțin perechi "Expresie: rezultat rezultat" (figura 4.9).

    Smochin. 4.9.

    În concluzie, rămâne din nou să rețineți că aceste metode au apărut numai în JavaScript 1.5 și, în consecință, nu funcționează în Netscape 4, MSIE 4/5 și Opera browsere la versiunea 7.0. În același timp, ele oferă posibilități mai flexibile pentru formatarea numerelor atunci când se afișează, de exemplu, metoda rotundă () a obiectului matematic.

    2011-08-01 // au întrebări, sugestii, comentarii? Poti

    Cu mult timp în urmă, în timpul XHTML / HTML4, dezvoltatorii au avut doar câteva caracteristici pe care le-ar putea folosi pentru a stoca date arbitrare legate de DOM. Ați putea să vă inventați propriile atribute, dar a fost riscant - codul dvs. nu va fi valabil, browserele ar putea ignora datele dvs. și ar putea provoca probleme dacă numele a coincis cu atribute standard HTML.

    Prin urmare, majoritatea dezvoltatorilor au fost legați de atributele de clasă sau relativă, deoarece au fost singura modalitate rezonabilă de a stoca linii suplimentare. De exemplu, să presupunem că creăm un widget pentru afișarea mesajelor ca o linie temporară de mesaje în Twitter. În mod ideal, JavaScript ar trebui să poată configura fără a fi nevoie să rescrie codul, astfel încât să definim ID-ul de utilizator în atributul de clasă, de exemplu:

    Codul nostru JavaScript va căuta un element cu ID msglist.. Folosind scriptul, vom căuta clase începând cu utilizator_, iar "Bob" în cazul nostru va fi ID-ul de utilizator și vom afișa toate mesajele acestui utilizator.

    Să presupunem că, de asemenea, dorim să stabilim numărul maxim de mesaje și să săriți mesajele de peste șase luni (180 de zile):

    Atributul nostru. clasă Este foarte rapid alpinism - este mai ușor să permiteți o eroare, iar analiza șirurilor de pe JavaScript devine mai complicată.

    Atributele de date HTML5.

    Din fericire, în HTML5, a fost introdusă capacitatea de a folosi atribute personalizate. Puteți utiliza orice nume în registrul inferior cu prefixul date-, de exemplu:

    Atribute personalizate de date:

    • aceste linii sunt în ele puteți stoca orice informații care pot fi reprezentate sau codificate ca șir, cum ar fi JSON. Tipurile trebuie aduse utilizând JavaScript
    • ar trebui să fie utilizate în cazurile în care nu există elemente sau atribute HTML5 adecvate
    • aplicați numai la pagină. Spre deosebire de microformate, ele trebuie să fie ignorate sisteme externeTip motoare de căutare și roboți de căutare

    Exemplul nr. 1 de procesare pe JavaScript: GetTtribute și SetTtribute

    Toate browserele vă permit să obțineți și să modificați atributele de date utilizând metodele GetTtribute și SetTtribute:

    Var msglist \u003d document.getelementbyid ("msglist"); Var Show \u003d msglist.getattribute ("Dimensiune listă de date"); msglist.setattribute ("Dimensiune de date", + Afișare + 3);

    Funcționează, dar ar trebui să fie utilizat numai pentru a menține compatibilitatea cu browserele vechi.

    Exemplul # 2 Prelucrarea pe JavaScript: Date () Metoda JQuery Biblioteca

    Pornind de la JQuery 1.4.3 Data () Metoda procesează atributele de date HTML5. Nu trebuie să specificați în mod explicit prefixul date-Deci, un astfel de cod va funcționa:

    Var msglist \u003d $ ("# msglist"); vary show \u003d msglist.data ("dimensiunea listei"); msglist.data ("dimensiunea listei", arată + 3);

    Dar, așa cum este posibil, rețineți că JQuery încearcă să transforme valorile unor astfel de atribute la tipurile de măturări (valori booleene, numere, obiecte, matrice sau null) și afectează DOM. Spre deosebire de setTtribute., Metoda date () fizic nu va înlocui atributul date-listă-dimensiune - Dacă verificați valoarea sa în afara jQuery - va rămâne în continuare egală cu 5.

    Exemplul nr. 3 de procesare pe JavaScript: API pentru lucrul cu seturile de date

    Și în cele din urmă, avem un API pentru a lucra cu seturi de date HTML5, care returnează obiectul DomStringMap. Trebuie să vă amintiți că atributele de date sunt afișate în obiect fără prefixe date-Din nume sunt îndepărtate semne de hiphena, iar numele în sine sunt convertite în camelcase, de exemplu:

    Numele atributului Numele în setul de date API
    utilizatorul de date. utilizator.
    maxage-maxage. maxage.
    date-listă-dimensiune listează

    Noul nostru cod:

    Var msglist \u003d document.getelementbyid ("msglist"); var show \u003d msglist.dataset.LISTIZE; msglist.dataset.LISTING \u003d + Afișare + 3;

    Acest API este susținut de toate browserele moderne, dar nu IE10 și de mai jos. Pentru astfel de browsere, există o soluție de lucru, dar, probabil, este mai practic să utilizați jQuery dacă scrieți pentru browsere vechi.

    Când lucrați S. data și ora în JavaScript Folosit data obiectului.. Cred că nu este necesar să explicați cât de des trebuie să lucrați cu data și ora. Și în acest articol veți învăța cum să faceți acest lucru JavaScript..

    Să începem prin tradiție, cu designeri date de obiect. Există patru dintre ele. Primul constructor fără parametri și returnează ora și data curentă:

    Data varului \u003d Data nouă ();
    document.write (data);

    Ca rezultat, veți vedea ceva în acest spirit: " Thu 14 octombrie 2010 11:42:06 GMT + 0400".

    Al doilea designer date de obiect - Acesta este un constructor cu un parametru. Acest parametru conține numărul de milisecunde în trecut 01.01.1970 (Originea erei Unix.). De exemplu, deci:

    Data varului \u003d Data nouă (135253235);
    document.write (data);

    Ca rezultat, veți vedea următoarele: " Fri Jan 02 1970 16:34:13 GMT + 0300".

    Următorul Constructor vă permite să creați data obiectului. Cu specificațiile următorilor parametri: an, lună și numere:

    Data varului \u003d noua dată (2010, 0, 12);
    document.write (data);

    Rezultat: " Tue Jan 12 2010 00:00:00 GMT + 0300"De asemenea, observați că 0 Oh. Luna este ianuarie, și 11th. - Acesta este decembrie.

    Și ultimul designer clasa dată în JavaScript Vă permite să creați data obiectului. Cu toți parametrii datei și orei: an, lună, număr, ore, minute și secunde.

    Data varului \u003d noua dată (2010, 0, 12, 23, 45, 12);
    document.write (data);

    Se pare că această linie: " Tue Jan 12 2010 23:45:11 GMT + 0300". Asta e tot designerii obiectului de date în JavaScriptAm furnizat dezvoltatorilor.

    Proprietăți speciale ale U data clasei. Nu, deci mergem imediat la metode. Să începem imediat din grupul de metode care lucrează complet în mod egal, dar fiecare dintre ele își întoarce data și elementul de timp:

    Data varului \u003d Data nouă ();
    document.write ("an -" + data.GegeLeear () + "
    ");
    document.write ("lună -" + data.getmontmonth () + "
    ");
    document.write ("număr -" + data.getdate () + "
    ");
    document.write ("Ziua săptămânii -" + data.getday () + "
    ");
    document.write ("oră -" + dată.tethours () + "
    ");
    document.write ("minut -" + date.geminute () + "
    ");
    document.write ("secund -" + data.getsesconds () + "
    ");
    document.write ("miliseconda -" + data.getmiliseconds () + "
    ");
    document.write ("numărul de milisecunde a trecut de la 01/01/1970 -" + data.gettime () + "
    ");

    Ringând acest script, înțelegeți instantaneu că fiecare dintre aceste metode o face. Singurul lucru pe care vreau să-l am observat este că numărarea zilelor săptămânii începe, de asemenea zero. Și duminica are un index 0 , și sâmbătă - 6 .

    Există metode similare, dar arată greenwich Data și ora. Să scriem un astfel de cod:

    Data varului \u003d Data nouă ();
    document.write ("an -" + date.getuttileeear () + "
    ");
    document.write ("lună -" + data.getcmonth () + "
    ");
    document.write ("număr -" + data.getutcdate () + "
    ");
    document.write ("Ziua săptămânii -" + dată.GetUtutDay () + "
    ");
    document.write ("oră -" + data.getutchours () + "
    ");
    document.write ("minut -" + data.getUtutcminutes () + "
    ");
    document.write ("secund -" + data.getutcsecseconds () + "
    ");
    document.write ("milisecundă -" + data.getutcmiliseconds () + "
    ");

    Rularea acestui script, veți învăța curentul data și ora în Greenwich.

    Metode opuse obține () sunt metode - a stabilit (). Dacă primul a returnat anumite valori, acesta din urmă, dimpotrivă, le schimbă. De fapt, acest scenariu pe care nu l-am putut da, dar astfel încât să nu mai rămână întrebări, să o facem:

    Data varului \u003d Data nouă ();
    data.setivaear (1990);
    data.setmonth (11);
    data.setdate (15);
    date.sethurs (9);
    date.setminute (20);
    data.setseConds (0);
    date.setmilisecunde (10);
    document.write (data);

    Sper că ați observat că metoda sETDAD () nu exista. Acest lucru sugerează că ziua săptămânii este selectată în funcție de an, lună și numere.

    Există, de asemenea, metode similare pentru Greenwich. Numai prefixul este adăugat UTC.De exemplu, o metodă este utilizată pentru a schimba luna setUtCmonth ().

    Și ultima metodă este regleaza ora (). Durează ca parametru numărul de milisecunde trecute cu 01.01.1970 :

    Data.settime (39293012);
    document.write (data);

    Ca rezultat, veți vedea acest lucru: " Thu Jan 01 1970 13:54:53 GMT + 0300".

    Asta e toți designerii și metodele data Obiect în JavaScript.