login  Naam:   Wachtwoord: 
Registreer je!
 Tutorials

Tutorials > Javascript


Gegevens:
Geschreven door:
Stijn
Moeilijkheidsgraad:
Moeilijk
Hits:
5881
Punten:
Aantal punten:
 
Aantal stemmen:
0
Stem:
Niet ingelogd
Nota's:
 Lees de nota's (0)
 


Tutorial:

Inner klasses in Javascript

Inner klasses in Javascript
Menu: 1. Voorwoord
2. Inleiding
3. De inner klasse
4. Een tweede test
5. Tot slot

1. Voorwoord


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";
    }
   
    Adresboek.prototype = {
        count : 0,
       
        getIterator : function() {
            return new Iterator();
        },
       
        toevoegen : function(persoon) {
            if(validate(persoon)) {
                personen.push(persoon);
                this.count += 1;
            }
        },
       
        toString : function() {
            return personen.toString();
        }
    };
   
    return Adresboek;
   
})();

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.


4. Een tweede test


<script language="javascript" type="text/javascript" src="adresboek.js"></script>

<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);
   
    adressen.toevoegen(persoon);
    adressen.toevoegen(persoon2);
   
    alert(adressen);
    alert("Aantal: " + adressen.count);
   
    //iterator test code
    var it = adressen.getIterator();
   
    while(it.hasNext()) {
        alert(it.next());
    }
</script>

De code spreekt voor zichzelf. Zoals je ziet wordt de iterator goed toegepast.


5. Tot slot


Dit was een kleine uitbreiding op de vorige tutorial. Bij vragen, opmerkingen of extra informatie kan je altijd terecht bij de reacties.

De volledige code van adresboek.js: http://aiids.pastebin.com/6gK7N1fV





« Vorige tutorial : WYSIWYG-editor

© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.031s