JS - Objecten - maken
Home

JS - Objecten - maken

JS - Objecten - maken

Objecten kan je op twee manieren aanmaken: de declaratieve (letterlijk) vorm en de geconstrueerde vorm.

Declaratieve vorm

De declaratieve vorm ziet er zo uit:

var myObj = {
   key : value
   // ...
};

We beginnen met een eenvoudig voorbeeld:

var persoon = {
   voornaam: 'Jef',
   familienaam: 'Inghelbrecht',
   straat: 'Braziliëstraat 38',
   stad: 'Antwerpen',
   postcode: '2000',
   geslacht: 'man'
};

Je ziet dat:

De namen van de eigenschappen - van nu af aan spreken we niet meer van sleutels maar van eigenschappen - kan je tussen enkele of dubbele aanhalingstekens plaatsen:

var persoon = {
   voornaam: 'Jef',
   'familienaam': 'Inghelbrecht',
   "straat": 'Braziliëstraat 38',
};

Je plaatst eigenschappen tussen aanhalingstekens enkel en alleen als:

In alle andere gevallen is dat alleen maar meer typwerk.

Vermits functies ook gegevens zijn kan je aan een property de waarde van een functie toekennen:

naam: function() {return this.voornaam + ' ' + this.familienaam;}

this

this is een sleutelwoord en geen waarde. Je kan de waarde van this dus niet veranderen.

Geconstrueerde vorm

De geconstrueerde vorm ziet er zo uit:

var myObj = new Object ();
myObj.key = value;

De geconstrueerde vorm en de letterlijke vorm maken precies hetzelfde soort object. Het enige verschil is dat je één of meerdere sleutel/waarde paren kan toevoegen aan de letterlijke declaratie, terwijl bij geconstrueerde vorm, je de eigenschappen één voor één op een rijtje aan het object moet toevoegen.

Het is zeer ongewoon om de "geconstrueerde vorm" te gebruiken voor het maken van objecten. Meestal wordt de letterlijke syntaxis gebruikt. Hetzelfde geldt voor de meeste van de ingebouwde objecten (later toegelicht).

Tip

Er is geen reden om de new Object() syntax te gebruiken om een object te maken. Gebruik omwille van leesbaarheid en snelheid van uitvoering de declaratieve vorm.

Voorbeeld

Objecten zijn 'mutable'

Mutable of veranderlijk is een andere manier om te zeggen dat objecten by reference zijn en niet by value. Gegeven:

var persoon = [];
persoon['voornaam'] = 'Jef';
persoon['familienaam'] = 'Inghelbrecht';
persoon['straat'] = 'Braziliëstraat 38';
persoon['postcode'] = '2000';
persoon['geslacht'] = 'man';
persoon['naam'] =  function() {return this.voornaam + ' ' + this.familienaam;}

Het volgende statement maakt geen kopie van het object persoon:

var jef = persoon;

Het volgende statement wijzigt zowel het object jef als het object persoon:

jef.straat = 'Rue des blancs manteaux 20';

See the Pen JavaScript - Objecten zijn veranderlijk by Jef Inghelbrecht (@jef) on CodePen.

Beperkingen van objecten

De voorbeelden hierboven zijn te beperkt in vele situaties. Je kan slechts één enkel object van dat type maken. Zoals je in het voorbeeld in CodePen kan zien moeten we de methode naam in beide objecten herhalen. Het zou efficiënter zijn als we deze methode kunnen laten delen door alle exemplaren of instanties van één hetzelfde object, m.a.w. als over de mogelijkheid van een klasse te maken zouden beschikken.

Soms is het nodig om meerdere exemplaren van één het zelfde object te maken. In de voorbeelden in CodePen zou Jef en Kees exemplaren of instanties moeten kunnen zijn van het object persoon.

JI
2016-09-25 12:02:53