Met de introductie van ES6 biedt JavaScript nu de mogelijkheid om private velden in klassen te declareren. Dit is bijzonder belangrijk voor de kapseling van gegevens en het voorkomen van ongewenste toegang van buitenaf. In deze tutorial leer je hoe je private velden effectief implementeert en gebruikt om je gegevens veilig te houden.
Belangrijkste inzichten
- Private velden worden gedeclareerd met het hash-teken (#).
- Toegang tot private velden is alleen mogelijk binnen de klasse.
- JavaScript biedt geen sleutelwoord-gebaseerde zichtbaarheid zoals andere programmeertalen.
Stapsgewijze handleiding
Klas declareren en private leden creëren
Eerst creëren we een klasse en declareren we een privé veld. We beginnen met een klasse die de naam Secret draagt en een privé veld genaamd #secret bevat. Dit veld slaat vertrouwelijke informatie op die niet toegankelijk moet zijn voor externe toegang.

Instantie van de klasse maken en methode aanroepen
Vervolgens maken we een instantie van de klasse Secret en roepen we de methode print() aan om de waarde van het private veld weer te geven. Dit zou er als volgt uit moeten zien:
Poging tot toegang van buitenaf tot private velden
Het wordt nu interessant als je probeert direct toegang te krijgen tot het private veld #secret van buitenaf. Je zult merken dat dit niet werkt. De JavaScript-compiler zal je al waarschuwen tijdens het schrijven van de code.
Als je mySecret.#secret invoert, krijg je een foutmelding in Visual Studio Code. Dit toont aan dat private velden inderdaad hun doel dienen: ze zijn niet toegankelijk van buiten de klasse.
Controle van zichtbaarheid met Object Keys
Een goede testmethode is de controle of het private veld zichtbaar is bij het gebruik van Object.keys(). Als je probeert de sleutels van de instantie te lijsten, zou je moeten zien dat #secret niet wordt vermeld.
Je ziet dat het private veld niet wordt vermeld. Dit laat het voordeel van gegevenskapseling in JavaScript zien.
Verschil met eerdere conventies
Vroeger waren er conventies die met behulp van dubbele underscores op private velden wezen. Deze methode werkt echter niet echt, omdat er geen bescherming is tegen toegang tot private eigenschappen. Met de invoering van private velden met het hash-teken heb je nu een schone en effectieve methode voor het declareren van private variabelen.
Statische private velden maken
Je kunt ook statische private velden in je klasse declareren. Dit werkt vergelijkbaar met instantievariabelen, maar vereist een iets andere aanpak bij de initialisatie.
console.log(Secret.getPrivateStaticField()); // Uitvoer: "Ik ben privé"
Het is belangrijk op te merken dat je de statische toegang met de klassenaam-syntaxis doet.
Conclusie
Met het gebruik van private velden in JavaScript-klassen zorg je ervoor dat belangrijke gegevens alleen intern binnen de klasse worden verwerkt. Dit is een groot voordeel voor de kapseling en veiligheid van je datastructuren. Je hebt nu geleerd hoe je private velden implementeert, er van buitenaf toegang toe krijgt en de kapseling van gegevens effectief waarborgt.
Samenvatting – Private velden effectief gebruiken in JavaScript-klassen
In deze handleiding heb je het proces geleerd voor de implementatie en het gebruik van private velden in JavaScript-klassen. Je weet nu dat de declaratie van private velden gebeurt met het hash-teken (#) en dat toegang van buitenaf niet mogelijk is.
Veelgestelde vragen
Wat zijn private velden in JavaScript?Private velden zijn eigenschappen van een klasse die niet van buitenaf toegankelijk zijn en alleen binnen de klasse kunnen worden bewerkt.
Hoe declareer ik een privé veld?Een privé veld wordt gedeclareerd door het hash-teken (#) voor de naam te plaatsen, bijvoorbeeld #mijnPrivéVeld.
Kan ik private velden statisch declareren?Ja, je kunt private velden ook statisch declareren door de syntaxis static #veldnaam te gebruiken.
Waarom zijn private velden belangrijk?Private velden beschermen je gegevens tegen ongeoorloofde toegang van buitenaf en bevorderen de kapseling in objectgeoriënteerd programmeren.
Hoe werkt de toegang tot private velden?Private velden zijn alleen toegankelijk binnen de klasse. Een extern script of andere code kan er niet rechtstreeks toegang toe krijgen.