Deze tutorial is bedoeld voor mensen die kennis hebben van OOP en inzicht hebben in geavanceerde Javascript technieken.
Deze tutorial maakt gebruik van de Adresboek code die gebruikt werd in de vorige tutorial: OOP in Javascript
2. Inleiding
Een inner klasse is een klasse die in een klasse zit. Iterators worden vaak als inner klasses gemaakt. In Java wordt dit ook gedaan om event handlers te maken.
3. De inner klasse
adresboek.Adresboek=(function(){
var personen =[];
/**
* De inner klasse
*/ var Iterator =(function(){
var index;
function Iterator() {
index =0; }
Iterator.prototype={
hasNext :function(){ return index < personen.length; },
next :function(){ return personen[index++]; } };
return Iterator;
})(); /** einde inner klasse **/
function Adresboek() {
personen =[]; }
function validate() { return persoon !=null&&typeof(persoon)=="object"; }
Zoals je ziet is de inner klasse private gemaakt. Dit wil zeggen dat je geen new adresboek.Adresboek.Iterator() kan doen. In de code van Adresboek kan je wel een nieuwe instantie maken van de inner klasse en die instantie dan teruggeven. Als je die instantie opvraagt en in een variabele stopt buiten de klasse (zie voorbeeld hieronder), dan kan je wel de publieke methodes op die functie oproepen.
De code van een inner klasse is hetzelfde als een gewone klasse.
Je kan geen inner klasse maken in prototype sectie van de klasse.
<script language="javascript" type="text/javascript"> var adressen =new adresboek.Adresboek();
var adres =new adresboek.Adres("St-Elooisplein","36/44","8800","Roeselare"); var persoon =new adresboek.Persoon("stijn","0479/51.35.47", adres); var persoon2 =new adresboek.Persoon("tine","geen", adres);