Klassen in JavaScript
Ook in Javascript kan je klassen aanmaken. Je zal merken dat dit echter enigszins anders is dan in C# het geval is. De redenen waarom je klassen zou gebruiken zijn echter nog steeds dezelfde:
- Structuur: Klassen organiseren je code beter, vooral in grotere projecten.
- Herbruikbaarheid: Dankzij overerving en methoden kun je efficiënter code hergebruiken.
- Leesbaarheid: Klassen maken het eenvoudiger om de logica van je code te begrijpen.
Wat is een klasse?¶
Een klasse kan je zien als een template voor objecten. Hiermee kun je een set eigenschappen (data) en methoden (functies) definiëren die objecten met een vergelijkbare structuur en gedrag delen.
In JavaScript worden klassen gedefinieerd met behulp van het sleutelwoord class
. Hier is een eenvoudig voorbeeld:
class Persoon {
constructor(naam, leeftijd) {
this.naam = naam;
this.leeftijd = leeftijd;
}
# Introductie tot Klassen in JavaScript
Klassen in JavaScript bieden een krachtige manier om objectgeoriënteerd programmeren te gebruiken. Ze maken het eenvoudiger om objecten te structureren, gedrag te definiëren en herbruikbare code te schrijven.
## Wat is een klasse?
Een klasse is als een blauwdruk voor objecten. Hiermee kun je een set eigenschappen (data) en methoden (functies) definiëren die objecten met een vergelijkbare structuur en gedrag delen.
In JavaScript worden klassen gedefinieerd met behulp van het sleutelwoord `class`. Hier is een eenvoudig voorbeeld:
```javascript
class Persoon {
constructor(naam, leeftijd) {
this.naam = naam;
this.leeftijd = leeftijd;
}
begroet() {
console.log(`Hallo, mijn naam is ${this.naam} en ik ben ${this.leeftijd} jaar oud.`);
}
}
// Een object maken van de klasse
const persoon1 = new Persoon('Alice', 30);
persoon1.begroet(); // Output: Hallo, mijn naam is Alice en ik ben 30 jaar oud.
De constructor
Methode¶
De constructor
is een speciale methode die wordt aangeroepen wanneer een nieuw object van een klasse wordt gemaakt. Hiermee kun je eigenschappen initialiseren.
In het voorbeeld hierboven stelt de constructor
de naam
en leeftijd
in voor het object.
Methoden in Klassen¶
Methoden zijn functies die deel uitmaken van een klasse. Je definieert ze door hun naam en gedrag binnen de klasse te specificeren. Methoden worden meestal gebruikt om acties uit te voeren die verband houden met het object.
class Auto {
constructor(merk, model) {
this.merk = merk;
this.model = model;
}
start() {
console.log(`${this.merk} ${this.model} is gestart.`);
}
}
const auto1 = new Auto("Tesla", "Model S");
auto1.start(); // Output: Tesla Model S is gestart.
Overerving¶
Klassen in JavaScript ondersteunen overerving, waarmee je een nieuwe klasse kunt maken die eigenschappen en methoden overneemt van een andere klasse. Dit maakt je code herbruikbaarder en overzichtelijker.
class Dier {
constructor(soort) {
this.soort = soort;
}
maakGeluid() {
console.log("Dit dier maakt een geluid.");
}
}
class Hond extends Dier {
constructor(soort, naam) {
super(soort); // Roept de constructor van de ouderklasse aan
this.naam = naam;
}
maakGeluid() {
console.log(`${this.naam} blaft!`);
}
}
const hond = new Hond("Hond", "Buddy");
hond.maakGeluid(); // Output: Buddy blaft!
Hoe Klassen in JavaScript Verschillen van Klassen in C¶
Hoewel klassen in JavaScript en C# vergelijkbare concepten delen, zijn er enkele belangrijke verschillen:
-
Geen strikte typen in JavaScript:
-
JavaScript is een dynamisch getypeerde taal, wat betekent dat je geen datatypes hoeft te specificeren bij het definiëren van eigenschappen of methoden. C# daarentegen is sterk getypeerd en vereist dat je de types van variabelen, parameters en returnwaarden expliciet opgeeft.
class Persoon {
constructor(naam, leeftijd) {
this.naam = naam; // Geen type nodig
this.leeftijd = leeftijd;
}
}
// In C# zou dit eruitzien als:
class Persoon {
public string Naam { get; set; }
public int Leeftijd { get; set; }
public Persoon(string naam, int leeftijd) {
Naam = naam;
Leeftijd = leeftijd;
}
}
-
Geen toegangsspecificaties in JavaScript:
-
In JavaScript zijn alle eigenschappen en methoden standaard publiek. C# biedt toegangsspecificaties zoals
public
,private
, enprotected
om de zichtbaarheid van eigenschappen en methoden te regelen. JavaScript introduceerde wel private velden met een#
-prefix, maar dit is beperkt in gebruik.
class Persoon {
#leeftijd; // Privé veld
constructor(naam, leeftijd) {
this.naam = naam;
this.#leeftijd = leeftijd;
}
getLeeftijd() {
return this.#leeftijd;
}
}
// In C#:
class Persoon {
private int Leeftijd;
public Persoon(string naam, int leeftijd) {
Naam = naam;
Leeftijd = leeftijd;
}
public int GetLeeftijd() {
return Leeftijd;
}
}
-
Geen interfaces in JavaScript:
-
JavaScript ondersteunt geen interfaces zoals C#. In plaats daarvan kan een object eenvoudigweg methoden of eigenschappen implementeren zonder strikte contracten. In C# kun je interfaces gebruiken om een structuur af te dwingen.
-
Constructies zoals
abstract
enstatic
: -
JavaScript ondersteunt
static
methoden en eigenschappen, maar heeft geen ingebouwde ondersteuning voor abstracte klassen. In C# kun je abstracte klassen en methoden definiëren om een basisstructuur af te dwingen.