Fundamentele programării (XX) - JavaScript

Acesta este ultimul episod al serialului dedicat fundamentelor programării. Ne vom ocupa tot de obiecte, mai exact de obiectul curent.

Am spus că obiectele au funcții; funcțiile pot accesa sau modifica proprietățile obiectului. Există situații în care avem nevoie să folosim obiectul cu totul; câteva dintre ele sunt:

  • dorim să facem distincție între proprietățile obiectului și eventuale variabile sau eventuali parametri cu același nume;
  • dorim să apelăm o funcție (posibil a altui obiect) și care are nevoie de un parametru de tipul obiectului nostru și dorim să folosim ca argument obiectul curent;
  • avem o funcție care returnează un obiect care are tipul respectiv și dorim să returnăm obiectul curent.

În JavaScript putem accesa obiectul curent folosind cuvântul this. E ca și cum am avea o variabilă a cărei valoare este chiar obiectul curent. De fapt, am văzut deja că avem nevoie de acest this  pentru a accesa proprietățile obiectului curent.

Accesarea proprietăților obiectului curent

În episodul anterior am lucrat cu scoruri; nu am folosit constructori, dar dacă am dori unul ar putea arăta așa:

Dacă dorim, putem denumi parametri constructorului gazde și oaspeti (nu mai trebuie să inventăm o nouă denumire). Folosind this este clar care este proprietatea și care este parametrul.

În stânga avem proprietatea și în dreapta avem parametrul. Evident, nu doar în constructori se poate folosi această idee. Am putea avea o funcție care stabilește valoarea unei proprietăți (o astfel de funcție se numește setter):

Putem pune setter-ul și în interiorul constructorului și ar arăta aproape ca o proprietate:

Transmiterea obiectului curent ca argument

Să presupunem că avem un obiect care reprezintă tabela de marcaj a unui stadion. Pentru a afișa scorul curent al partidei tabela ne-ar putea pune la dispoziție o funcție care să aibă ca parametru un  Scor. O implementare simplă ar putea fi:

Obiectul nu are proprietăți simple, doar o funcție. Nu întâlnim foarte des așa ceva, dar este suficient atât pentru a arăta cum transmitem obiectul curent ca argument.

Acum, în interiorul obiectului Scor trebuie să avem un obiect de tip Tabela. Poate fi o proprietate sau poate apărea într-o funcție (ca argument sau variabilă locală). Oricum ar fi, dacă la un moment dat avem o Tabela, scorul curent ar putea fi afișat pe tabelă folosine apelul:

Un exemplu ar fi:

Observăm o referință circulară aici: scorul folosește tabela care folosește scorul. Așa ceva nu este recomandat, deși este corect. Aici am introdus referința pentru a ilustra cât mai simplu transmiterea obiectului curent, dar practica trebuie evitată.

Returnarea obiectului curent

Uneori dorim ca o funcție să returneze obiectul curent: de exemplu, dacă scorul se modifică, am putea dori să returnăm noul scor. Să modificăm puțin funcțiile apelate atunci când se înscriu goluri:

Putem folosi acum obiectele astfel:

În JavaScript, this poate fi utilizat și în alte scopuri, dar aceste utilizări sunt specifice limbajului.

La final

Acesta a fost versiunea JavaScript a serialului dedicat fundamentelor programării. Scopul nu a fost prezentarea limbajului JavaScript, ci doar exemplificarea elementelor de bază folosind acest limbaj. Am încercat să prezentăm elemente comune majorității limbajelor de programare. Vă mulțumim că ne-ați urmărit pe parcursul acestui serial și așteptăm sugestiile voastre pentru a completa informațiile prezentate.