Direct naar de hoofdinhoud
Module 3 · Les 2 van 410/32 in de cursus~10 min
Modulelessen (2/4)

Objecten: de sleutelwaardekaart

Een object in JS is een ongeordende verzameling van sleutel → waarde-paren. Sleutels zijn strings (of Symbol), waarden zijn van alles: getallen, strings, arrays, andere objecten, functies. Het is de meest gebruikte datastructuur in de taal: elk "record" in uw domein zal doorgaans een object zijn.

JS
const utente = {
  nome: 'Anna',
  eta: 28,
  attivo: true,
  ruoli: ['admin', 'editor'],
};

Leeseigenschappen: punt versus haakje

Er zijn twee gelijkwaardige notaties:

JS
utente.nome; // 'Anna'    (dot — the normal form)
utente['nome']; // 'Anna'    (bracket — equivalent)

// Brackets are MANDATORY when:
// 1) the key is not a valid identifier
const tag = { 'codice-fiscale': 'ABC123' };
tag['codice-fiscale']; // OK
// tag.codice-fiscale;      // syntax error

// 2) the key is computed (variable/expression)
const campo = 'eta';
utente[campo]; // 28

Een ontbrekende eigenschap retourneert undefined, zonder fouten:

JS
utente.telefono; // undefined

Toevoegen, wijzigen, verwijderen

JS
const u = { nome: 'Anna' };
u.eta = 28; // adds
u.nome = 'Anna B.'; // modifies
delete u.eta; // removes the property

delete is een trefwoord. Het zal een zeldzame use case blijken te zijn: de meeste van de keer dat je een nieuw object wilt maken zonder die sleutel (we zullen dit zien met spreiding).

Afkorting: toetsen met de naam van de variabele

Wanneer de sleutelnaam overeenkomt met de naam van de variabele, kunt u de duplicatie weglaten:

JS
const nome = 'Anna';
const eta = 28;

const u1 = { nome: nome, eta: eta }; // explicit form
const u2 = { nome, eta }; // shorthand, equivalent

Controle op de aanwezigheid van een woning

Drie opties, in volgorde van voorkeur:

JS
'nome' in utente; // true   ← in operator
utente.nome !== undefined; // true   ← works almost always
Object.hasOwn(utente, 'nome'); // true   ← modern, safe

Probeer het

Oefening#js.m3.l2.e1
Pogingen: 0Laden…

Maak het object user = { naam: 'Sara', leeftijd: 22 }, voeg vervolgens de eigenschap 'active' toe die is ingesteld op true en retourneer het object als de laatste expressie.

Editor laden…
Toon hint

U kunt eigenschappen achteraf toevoegen met puntnotatie.

Oplossing beschikbaar na 3 pogingen

Oefening beoordelen

Oefening#js.m3.l2.e2
Pogingen: 0Laden…

Gegeven `product = { code: 'A1', prijs: 9.9 }` en de string `key = 'prijs'`, retourneert u de prijs met behulp van de haakjesnotatie (de laatste expressie moet resulteren in 9.9).

Editor laden…
Toon hint

Met haakjes kunt u een variabele als sleutel doorgeven.

Oplossing beschikbaar na 3 pogingen