Limbajul javascript - obiecte, metode și proprietăți

Materiale noi

Obiecte, metode și proprietăți

Obiecte și prototipuri

Acum, folosind modelul ierarhic de moștenire tipic pentru OOP, puteți crea obiecte copil (clase) în limba Java, de exemplu, pentru astfel de tipuri de mașini ca autobasculantă și autobuz:







În acest caz, obiectele Bus și Lorry moștenesc toate proprietățile din obiectul Automobile părinte. În acest caz, acestea moștenesc vânzătorul și proprietățile modelului. Rețineți că atunci când definiți clase Java, trebuie să specificați întotdeauna o metodă care să se potrivească cu numele clasei după nume. Această metodă se numește constructor și se numește automat când se creează o nouă copie a obiectului. Rețineți că în limbile orientate pe obiect, obiectul trebuie mai întâi definit și apoi creat apelând constructorul.

Apoi, creăm obiecte copil care moștenesc proprietățile clasei Automobile:

funcția Lorry () Lorry.prototype = nou Automobile; funcția Bus () Bus.prototype = Automobile noi;

Se poate observa că crearea de noi obiecte nu se conectează inițial cu părintele, ceea ce, din nou, nu este tipic pentru OOP. Legarea la clasa parentală se face separat, folosind cuvântul cheie prototip, care este folosit pentru a indica faptul că obiectul creat se bazează pe un alt obiect numit prototip.

Obiectele și proprietățile acestora

Pentru a atribui o valoare de proprietate unui obiect, trebuie doar să îi atribuiți o valoare. De exemplu, dacă vă referiți la exemplul de mai sus cu un obiect auto sau mai degrabă cu un camion, apoi pentru a atribui valori tuturor proprietăților obiectului Lorry, trebuie să scrieți următoarele:

var MyTrack = camion nou; // creați o instanță bazată pe obiectul Lorry MyTrack.vendor = "KamAZ"; // determina valoarea proprietății vânzătorului MyTrack.model = "6520"; // determina valoarea proprietății modelului MyTrack.carrying_tons = 20; // determina valoarea carry_tons

Deoarece variabila MyTrack este un obiect complet, puteți utiliza operatorul cu pentru a face înregistrarea mai compactă:

MyTrack ["furnizor"] = "KamAZ"; MyTrack ["model"] = "6520"; MyTrack ["carry_tons"] = 20;

Acum, că am înțeles atribuirea valorilor proprietăților obiectelor, să creăm o funcție care va returna toate proprietățile obiectului împreună cu valorile lor. Pentru a face acest lucru, avem nevoie de o instrucțiune for-in, care poate fi utilizată pentru a organiza o buclă care se repetă prin toate proprietățile obiectului. Ca rezultat, avem de-a face cu această funcție:

Rezultatul acestei funcții este rezultatul tuturor proprietăților obiectului cu valori:

carry_tons = 20 furnizor = modelul KamAZ = 6520

Rezultatul ar arăta mai bine dacă numele fiecărei proprietăți a fost precedat de numele obiectului propriu-zis. Pentru a face acest lucru, puteți să actualizați ușor funcția astfel încât să primească numele obiectului ca al doilea argument:

funcția show_props (obj, obj_name)

Acum trebuie să utilizați acest argument. Pentru a face acest lucru, facem schimbări în linia care "colectează" rezultatul:

rezultatul + = obj_name + "." + i + "=" + obj [i] + "\ n";

Dacă acum numiți o astfel de funcție, folosindu-l ca argument pentru metoda document.write, care transmite textul direct în documentul HTML, puteți vedea ceva de genul acesta în fereastra browserului:

MyTrack.carrying_tons = 20 MyTrack.vendor = КамАЗ MyTrack.model = 6520

Un exemplu complet poate fi găsit în fișierul objects \ automobile.html.

Crearea de obiecte noi

Astfel, deja în momentul creării unui nou exemplu de obiect de mașină, puteți să specificați imediat valori pentru toate proprietățile:

Astfel, obiectul nostru care descrie mașina poate fi scris după cum urmează:

În acest caz, definiția preliminară a funcției constructor nu mai este necesară, deoarece imediat este creată o variabilă, care este o instanță a obiectului. De fapt, acesta este principalul dezavantaj al acestei abordări: dacă aveți nevoie să creați o astfel de instanță, va trebui să re-listați toate proprietățile.

În cele din urmă, rămâne să luăm în considerare încă un aspect al creării obiectelor, referitor la proprietățile lor. În exemplele anterioare, am folosit numai tipuri de date simple, cum ar fi șiruri sau numere. Dar, de fapt, proprietatea obiect poate fi un alt obiect. De exemplu, o proprietate precum un motor poate fi adăugată la descrierea mașinii. La rândul său, motorul poate avea proprietăți precum volumul și numărul de cilindri. Astfel, folosind abordarea clasică, definim mai întâi motorul obiect și apoi obiectul-mașină:

Încercați acum să creați un astfel de obiect și să atribuiți valori tuturor proprietăților sale. Dacă nu există întrebări cu primele trei proprietăți, atunci cum rămâne cu obiectul ultimul obiect? În primul rând, trebuie să creați o instanță a unui astfel de obiect și numai atunci când acesta este deja definit, puteți crea o instanță a obiectului mașinii:







Desigur, puteți crea un astfel de obiect utilizând inițializatorul. Pentru aceasta, în definiția unui obiect, definiția unui obiect mai este specificată ca proprietate. Acesta va arata astfel:

În ambele cazuri, am atribuit imediat valori tuturor proprietăților. Cu toate acestea, avem încă o întrebare deschisă de schimbare a valorii proprietăților-obiecte. Și acest lucru se face din nou cu ajutorul notării punctului, numai pentru a ajunge la parametrii motorului, trebuie să folosim punctul de două ori:

MyCar.engine.volume = 1.3; MyCar.engine.cylinders = 4;

Dacă una dintre proprietățile obiectului motorului avea și un obiect, atunci ar fi trebuit să folosim punctul de trei ori și așa mai departe. Un exemplu poate fi găsit în fișierul car_object.html.

Metode de obiecte

Pentru a crea o metodă, trebuie mai întâi să scrieți o funcție care o implementează și apoi să o specificați în constructorul obiectului. Să presupunem că nu interferăm cu funcția, care afișează sub forma unei tabele toate proprietățile mașinii (sau, mai degrabă, obiectul mașinii). În acest caz, scrieți mai întâi următoarea funcție:

Această funcție creează mai întâi o variabilă string str, în care ia toate proprietățile obiectului, împreună cu marcajul HTML, iar apoi emite acest șir în fereastra browserului. Rețineți că funcția accesează proprietățile obiectului utilizând acest pointer - această sintaxă implică faptul că această funcție va fi o metodă obiect.

Acum, că avem o funcție, rămâne să definim metoda în obiectul propriu-zis. Pentru aceasta, trebuie doar să adăugați numele funcției la descrierea acesteia:

Acum, prin crearea unui obiect de tip de mașină, puteți folosi pur și simplu metoda proprie pentru a afișa toți parametrii într-un tabel:

Fig. 4.3. Rezultatul metodei displayCar () a obiectului masinii

Complet un exemplu cu metoda displayCar () pentru metoda de lucru și simultan pentru mai multe obiecte de tipul de mașină poate fi privit în fișierul methods.html.

Unele metode ale obiectelor de ferestre și documente

În primul rând, aceste metode sunt alerte, prompte și confirmate aparținând obiectului ferestrei și deja cunoaștem metoda de alertă care cheamă caseta de dialog modală cu textul:

Celelalte două metode creează și casete de dialog modale, dar diferă prin faptul că se așteaptă ca utilizatorul să efectueze anumite acțiuni specifice. Deci, metoda de confirmare vă permite să alegeți una dintre cele două opțiuni:

Ca urmare a acestei comenzi, browser-ul afișează o fereastră cu textul specificat și sugerează alegerea în favoarea uneia dintre cele două opțiuni (a se vedea Figura 4.4).

Fig. 4.4. Alegerea a două răspunsuri este primul pas spre interactivitate

Pentru a utiliza această metodă, care se întoarce falsă sau adevărată, în funcție de butonul pe care utilizatorul face clic, trebuie să apelați la o declarație condiționată. De exemplu, pentru a afișa un tabel cu informații despre mașină numai dacă utilizatorul este de acord, puteți schimba codul după cum urmează:

dacă (confirmați ("Scrieți informații despre mașină?"))) MyCar.displayCar (); alta alertă ("Însuși a refuzat!");

Acum, la începutul încărcării documentului, va apărea o casetă de dialog cu întrebarea indicată și butoanele "OK" și "Anulare". Dacă faceți clic pe OK, veți vedea un tabel cu caracteristicile mașinii, în caz contrar va apărea o nouă fereastră cu cuvintele "El a refuzat!".

Chiar mai interesant este metoda promptă, care permite utilizatorului să introducă valorile ca răspuns la întrebările adresate de această metodă. De exemplu, puteți să întrebați utilizatorul care este numele său:

var Name = prompt ("Care este numele dvs.?");

Rezultatul acestei funcții va fi o fereastră care conține textul întrebării și o linie pentru răspuns (Figura 4.5). Faptul că valoarea returnată prin această metodă trebuie de asemenea să fie folosită cumva (de exemplu, prin atribuirea variabilei Name) nu trebuie să genereze nicio întrebare, deoarece metoda promptă, ca și confirmarea, este o funcție care returnează o valoare.

Fig. 4.5. Caseta de dialog numită prin metoda promptă

Din moment ce fereastra de prompt are de asemenea 2 butoane, trebuie avut în vedere că dacă utilizatorul nu introduce text și dă click pe OK, apasă "Cancel", valoarea returnată este nulă. Dacă utilizatorul dă clic pe OK, lăsând câmpul gol, valoarea returnată este un șir gol. Dar, spre deosebire de alertă și de confirmare, pentru metoda promptă, de fapt, există un alt parametru care definește răspunsul la întrebare în mod implicit. De exemplu, puteți specifica orice nume generic ca răspuns universal:

var Name = prompt ("Care este numele dvs.?", "Wanderer");

NOTĂ
Browser MSIE atunci când apelează promptul metodei fără un parametru suplimentar, deoarece valoarea implicită înlocuiește șirul undefined. Prin urmare, pentru a nu confunda utilizatorul și a nu-l obliga să ștergă această inscripție, utilizați întotdeauna parametrul suplimentar, cel puțin indicând sirul gol drept valoare.

Folosind metoda de prompt, puteți face un exemplu cu clasa mașinii mai interesant, oferind posibilitatea de a introduce (sau edita) parametrii mașinii prin afișarea secvențială a mai multor ferestre cu solicitări. Puteți vedea exemplul actualizat din fișierul confirm.html.

Pentru a crea ferestre fără moduri (adică ferestre de browser convenționale care pot afișa conținutul documentelor HTML), se folosește metoda deschisă:

var NewWindow = fereastră deschisă ("readme.html", "readme"); NewWindow.close ();

Aici este creată o nouă fereastră de browser, în care este încărcat fișierul readme.html și imediat este închis folosind altă metodă - închideți.

Ca parametri de fereastră, puteți să specificați dimensiunile acesteia, precum și să specificați prezența sau absența controalelor (în special bara de instrumente). De exemplu, pentru a crea o fereastră cu o lățime de 400 și o înălțime de 300 de pixeli și fără a avea o bară de instrumente, apelați metoda deschisă cu următorii parametri:

var NewWindow = fereastră deschisă ("", "", "toolbar = 0, height = 300, width = 400");

Dacă obiectul ferestrei este responsabil pentru fereastra browserului, atunci obiectul documentului se referă direct la conținutul acestuia. Deci, pentru obiectul document există și o metodă deschisă, dar nu creează o fereastră nouă, ci încarcă documentul în unul disponibil:

document.write ("Textul care trebuie scris în document"); document.writeln ("Text care va fi scris și în document");

Diferența între write () și writeln () este numai că aceasta din urmă adaugă caracterul "break line" (\ n) până la capăt. Când textul este finalizat, este util să utilizați metoda de închidere:

Aici, în primul rând, vom crea o fereastră nouă (NewWindow). Inițial va fi gol, dar putem scoate cu ușurință un text la acesta deschizându-l pentru scrierea și folosirea metodei writeln.

Un exemplu mai complet care ilustrează munca documentului și a metodelor de fereastră poate fi găsit în fișierul window.html.


SNK GSCP - noua bibliotecă pentru PHP 5!
Web Studio și Biblioteca Workshop Visual:
Standarde pentru tehnologiile web
Monopoly v. 2.0.2 Descărcări:
programe de download Produse:
programe și cărți







Articole similare

Trimiteți-le prietenilor: