Odată cu introducerea ES6, JavaScript oferă acum posibilitatea de a declara câmpuri private în clase. Acest lucru este deosebit de important pentru încapsularea datelor și prevenirea accesului nedorit din exterior. În acest tutorial, vei învăța cum să implementezi și să utilizezi câmpuri private eficient pentru a-ți menține datele în siguranță.
Concluzii principale
- Câmpurile private sunt declarate cu semnul hash (#).
- Accesul la câmpurile private se face doar în interiorul clasei.
- JavaScript nu oferă o vizibilitate bazată pe cuvinte cheie ca alte limbaje de programare.
Ghid pas cu pas
Declararea clasei și crearea membrilor privați
Mai întâi, vom crea o clasă și vom declara un câmp privat. Începem cu o clasă numită Secret care conține un câmp privat numit #secret. Acest câmp stochează informații confidențiale care nu ar trebui să fie disponibile pentru accesul extern.

Creează o instanță a clasei și apelează metoda
Apoi, vom crea o instanță a clasei Secret și vom apela metoda print() pentru a afișa valoarea câmpului privat. Aceasta ar trebui să arate astfel:
Încercarea de acces din exterior la câmpurile private
Interceptarea devine interesantă atunci când încerci să accesezi direct câmpul privat #secret din exterior. Vei observa că acest lucru nu funcționează. Compilatorul JavaScript te va avertiza deja în timpul scrierii codului.
Când introduci mySecret.#secret, vei primi un mesaj de eroare în Visual Studio Code. Aceasta arată că câmpurile private își îndeplinesc efectiv scopul: nu sunt accesibile din afara clasei.
Verificarea vizibilității cu Object Keys
O metodă bună de testare este verificarea dacă câmpul privat apare atunci când folosești Object.keys(). Dacă încerci să listezi cheile instanței, ar trebui să vezi că #secret nu este listat.
Vezi că câmpul privat nu este listat. Astfel, se dezvoltă avantajul încapsulării datelor în JavaScript.
Diferența față de convențiile anterioare
Anterior, existau convenții care indicate câmpurile private prin utilizarea de underscore-uri duble. Această metodă nu funcționează cu adevărat, deoarece nu există o protecție împotriva accesului la proprietățile private. Odată cu introducerea câmpurilor private cu simbolul hash, ai acum o metodă curată și eficientă pentru declararea variabilelor private.
Creează câmpuri private statice
De asemenea, poți declara câmpuri private statice în clasa ta. Acest lucru funcționează similar cu variabilele de instanță, dar necesită o abordare ușor diferită la inițializare.
console.log(Secret.getPrivateStaticField()); // Afișare: "Sunt privat"
Este important să reții că accesul static se face folosind sintaxa numelui clasei.
Concluzie
Prin utilizarea câmpurilor private în clasele JavaScript, poți asigura că datele importante sunt procesate doar intern în cadrul clasei. Acesta este un mare avantaj pentru încapsularea și securitatea structurilor tale de date. Acum ai învățat cum să implementezi câmpuri private, să accesezi din exterior și să asiguri eficient încapsularea datelor.
Sinteză – Utilizarea eficientă a câmpurilor private în clase JavaScript
În acest ghid, ai învățat procesul de implementare și utilizare a câmpurilor private în clase JavaScript. Acum știi că declararea câmpurilor private se face cu semnul hash (#) și că accesul din exterior nu este posibil.
Întrebări frecvente
Ce sunt câmpurile private în JavaScript?Câmpurile private sunt proprietăți ale unei clase care nu sunt accesibile din exterior și pot fi modificate doar în interiorul clasei.
Cum declar un câmp privat?Un câmp privat este declarat prin prefixarea semnului hash (#) în fața numelui, de exemplu, #câmpulMeuPrivat.
Pot declara câmpuri private statice?Da, poți declara câmpuri private și statice folosind sintaxa static #numeleCâmpului.
De ce sunt importante câmpurile private?Câmpurile private protejează datele tale de accesul neautorizat din exterior și promovează încapsularea în programarea orientată pe obiect.
Cum funcționează accesul la câmpurile private?Câmpurile private pot fi accesate doar în interiorul clasei. Un script extern sau alt cod nu poate accesa direct aceste câmpuri.