Skip to content

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:

  1. Structuur: Klassen organiseren je code beter, vooral in grotere projecten.
  2. Herbruikbaarheid: Dankzij overerving en methoden kun je efficiënter code hergebruiken.
  3. 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:

  1. Geen strikte typen in JavaScript:

  2. 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;
    }
}
  1. Geen toegangsspecificaties in JavaScript:

  2. In JavaScript zijn alle eigenschappen en methoden standaard publiek. C# biedt toegangsspecificaties zoals public, private, en protected 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;
    }
}
  1. Geen interfaces in JavaScript:

  2. 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.

  3. Constructies zoals abstract en static:

  4. 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.

class Helper {
  static zegHallo() {
    console.log('Hallo!');
  }
}

Helper.zegHallo();

// In C#:
public static class Helper {
    public static void ZegHallo() {
        Console.WriteLine("Hallo!");
    }
}