Home | Inhoudsopgave | Playground | Opdrachten | Links |
Inhoud | 9. ObjectenObjecten maken het mogelijk makkelijk leesbare en efficiënte code te schrijven. Zonder objecten is de kans groot dat je code een grote warboel wordt. Naar boven9.1. Wat is een object?Bij objecten denk je al snel aan dingen, zoals een stoel of een lamp. Zo'n stoel of lamp bestaat dan weer uit kleinere onderdelen, bijvoorbeeld een lampekap, een poot om op te staan en een aan/uit-knop voor de lamp. Dat is bij een object in JavaScript precies zo: het stelt iets voor, en bestaat uit een aantal onderdelen. Je hebt al een aantal objecten gebruikt in JavaScript, bijvoorbeeld een string (H4.5) of een array (H8). Een object bevat vaak een aantal variabelen, ofwel eigenschappen (zie H9.3) zoals je bij een array de lengte van die array kon opvragen met de eigenschap length. Verder bevat een object vaak een aantal methodes (zie H9.4), dit zijn de functies die in het object zitten. Zo had je bij de array de methode push(). Naar boven9.2. Verschil object en variabeleEen normale variabele kan maar één waarde bevatten, een object bevat er vaak meer. Verder bevat een normale variabele geen methodes. Een array is dus een object, want die bevat een heleboel waardes en bevat methodes. Maar toch schrijf je: JavaScript:
Hierdoor zou je denken dat een array ook gewoon een variabele is (terwijl het een object is), maar dat is het niet. Je maakt wel een variabele aan, genaamd mijnArray, maar dat is niet de werkelijke array. Die variabele is eigenlijk enkel een verwijzing naar de werkelijke array. Dat is te zien wanneer je een tweede variabele maakt, en de verwijzing die in mijnArray zit kopieert naar de nieuwe variabele. Als je dan namelijk iets wijzigt via die nieuwe variabele, zal die de wijziging doorverwijzen naar de werkelijke array en zal de wijziging dus ook bij mijnArray plaatsvinden gezien die naar dezelfde array verwijst. JavaScript:
Hoewel een string strict genomen ook een object is, is het meer een soort kruising tussen een variabele en een object. Want als je een string maakt is die variabele geen verwijzing naar de string maar dan is die variabele ook werkelijk de string. Een string is dus eigenlijk een variabele die ook methodes bevat. JavaScript:
9.3. EigenschappenEen object kan eigenschappen bevatten. Dat zijn de variabelen die in dat object zitten. Je hebt er al eens een gezien, namelijk eenArray.length (waarbij eenArray natuurlijk een array is). Eigenschappen kunnen dus benaderd worden door eerst de naam van de variabele die naar het object verwijst te typen, dan een punt en dan de naam van de eigenschap. Dus schematisch: verwijzendeVariabele.eigenschap De eigenschappen zijn gewone variabelen en kunnen dus ook weer een verwijzing naar een object zijn met zijn eigen eigenschappen en methodes. Daardoor is de volgende code mogelijk: JavaScript:
9.4. MethodesMethodes lijken veel op eigenschappen, het enige verschil is dat methodes functies zijn die in een object zitten en geen variabelen die in een object zitten. Methodes kunnen vaak de eigenschappen van een object aanpassen, denk bijvoorbeeld aan een array. Als je de methode push() aanroept zal er een element in die array bijkomen en dus wordt de eigenschap length ook aangepast. Een methode gebruik je op dezelfde manier als een eigenschap: verwijzendeVariabele.methode(eventuele, argumenten). Nu zie je dus dat bijvoorbeeld document.write() een methode is, write() is een methode (ingebouwde functie) van document, document is een van de objecten die altijd bestaat in JavaScript (die je dus niet zelf hoeft te maken en die je niet zelf kan maken), zie H10.3. Een methode is dus eigenlijk een functie die een speciale actie voor het object waar hij deel van is uitvoert. Zo voegt bijvoorbeeld push() alleen een element toe aan de array waar hij op uitgevoerd wordt. JavaScript:
9.5. Eigenschappen en methodesElk object heeft zo zijn eigen eigenschappen en methodes. Zo heeft een string ook weer allerlei methodes, en een array heeft ook veel meer methodes dan alleen push(). In H10 wordt van een aantal objecten een aantal eigenschappen en methodes genoemd die handig zullen zijn. Verder dient deze site niet als naslagwerk, maar als leersite. Naslagwerken die uitleg over alle methodes en eigenschappen bevatten kunnen makkelijk gevonden worden op het internet. Een daarvan is zeer aan te raden, alleen is deze wel Engelstalig: het naslagwerk van W3Schools over JavaScript Naar boven9.6. OpdrachtenEr zijn (nog) geen opdrachten voor dit hoofdstuk! |