Over classes in JavaScript
In veel programmeertalen kunnen afgeschermde stukken code worden gemaakt. Zo'n stuk code heet class
. Classes
zijn onderdeel van complete programma's. Alleen subroutines, functions en variabelen die expliciet beschikbaar zijn gemaakt
voor de software, kunnen door die software worden gebruikt. Het voordeel van classes is dat code eenvoudig kan worden hergebruikt.
Programmeertalen die dit mechanisme hebben zijn o.a. Visual Basic, C# en Java.
Ook JavaScript heeft een dergelijk class-mechanisme, alleen heet het daar module
.
JavaScript kent ook een class
. Dat is geen verzameling subroutines, functions en variabelen, maar een sjabloon
(template) voor het maken van objecten.
De code van een class ziet er als volgt uit:
class ClassName {
constructor(param_1,param_2,param_3) {
this.eigenschap_1 = param_1;
this.eigenschap_2 = param_2;
this.eigenschap_3 = param_3;
this.eigenschap_4 = "";
}
method_1(par_1,par_2) {
const abc = par_1 + par_2**2;
return abc;
}
method_2(par_1,par_2) {
const abc = par_1 + par_2**2;
this.eigenschap_1 = abc;
}
}
- Bij het declareren van een class moeten de regels van strict mode worden gevolgd.
- Je maakt een object met:
const abcd = new ClassName(xx,yy,zz);
Het aantal parameters moet gelijk zijn aan het aantal parameters van de constructor. - Een class definieert alleen methodes. Bij het aanmaken van een object vanuit een class wordt automatisch
de method
constructor()
uitgevoerd. De constructor maakt de eigenschappen (= de datavelden in het object). - De constructor in het voorbeeld heeft parameters, maar dat hoeft niet, bijvoorbeeld als er alleen initiële instellingen zijn die later worden overschreven. In het voorbeeld gebeurt dat bij eigenschap_4.
- De constructor mag maar één keer voorkomen in een class-declaratie. Als de constructor ontbreekt voegt JavaScript zelf een lege constructor in.
Het is mogelijk om een class uit te breiden met nieuwe eigenschappen en methodes. Doe je door het keyword
extends
toe te voegen aan de declaratie van class.
const abcd = new ClassId extends ClassName;
De declaratie van ClassName is hetzelfde als hierboven. De declaratie ClassId is:
class ClassId {
constructor(param_1,param_1a) {
super(param_1);
this.eigenschap_4 = param_1a;
}
method_1a(par_1a) {
const abc = par_1a**2;
return abc;
}
}
De methode super()
verwijst naar de parent van de class. Door super()
uit te voeren
in de constructor worden eigenschappen en methodes van de parent beschikbaar gemaakt.
Het is mogelijk om een method op te sluiten binnen zijn eigen class. Dat doe je door een method te
declareren met het keyword static
.
Stel: in de declaratie van className vervang je de regel
method_2(par_1,par_2) {
door:
static method_2(par_1,par_2) {
method_2 kan nu alleen nog worden aangeroepen binnen ClassName, niet meer vanuit ClassID en ook niet
door referentie "van buitenaf" aan objecten die met class ClassId
zijn gemaakt.
Bron: o.a. w3schools.com.