[JS]Object proggen hulp gevraagd (nesting problem)

Pagina: 1
Acties:

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Hallo,

Ik ben momenteel bezig om een een dynamische database te bouwen voor mijzelf.

Momenteel bestaat de tabel uit een Array welke gevuld is met PersonObjecten...

Nu wil ik graag het volgende doen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
_Record_begin
    perslist.newPerson('voornaam','achternaam');
    _relation_begin
        var r = new Relation();
        r.met = 'Naam Echtgeno(o)t(e)';
        r.begin = 'Datum begin';
        r.type = 'Type relatie';
        r.AddToParent();
        _child_begin
            var c = new Child('voornaam','achternaam','leeftijd');
            c.AddToParent();
        _child_end
    _relation_end
_recordend

Hiervoor had ik de volgende JS oplossing in gedachten:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function PersList() {
    // Initialize
    var a=arguments;
    // Properties
    this.persons = [];
}

PersList.prototype.Version = function() {
    return "DynPerson Table version 0.1 (beta)";
}

PersList.prototype.AddPerson=function() {

    var a = arguments;
    var id=this.persons.length;
    PersList.persons++;
    var c = a;
    c.container = this;
    c.index = id;
    this.persons[id]=c;
    this.PersID = PersList.persons;
    this.relations = [];
    return c; 
}

AddPerson.prototype.AddRelation=function(){

    var a = arguments;
    var id=this.relations.length;
    AddPerson.relations++;
    var c = a;
    c.container = this;
    c.index = id;
    this.relations[id]=c;
    this.relationID = AddPerson.relations;
    this.children = [];
}

AddRelation.prototype.AddChild=function(){


}

Nu werkt dit stukje niet:
code:
1
AddPerson.prototype.AddRelation=function()

Weet iemand wat ik hieraan kan doen??? Loop mij er al een hele tijd op dood te staren |:(

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Niemand???

Eeen hint is voldoende... ga ik vanavond wel weer verder knutselen...

Volgens mijn moet het namelijk wel kunnen....

ObjectModel wordt dan als volgt:
code:
1
2
3
4
Persons
  |---> Person
        |---> Relations
                |----> Children

Persons bevat een array met daarin personen en elke persoon heeft (eventueel) een array met relaties en per relatie kan er dan een array zijn voor de kinderen...

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 23:32

RM-rf

1 2 3 4 5 7 6 8 9

je probeert een functie aan een andere functie te hangen, addPerson is een method, geen object zelf,
mischien kun je beter een person object aanmaken, die gerefereerd wordt vanuit een persList-array

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 22-06 13:51

Clay

cookie erbij?

code:
1
2
3
4
PersList.prototype.Version = function() { ... } 
PersList.prototype.AddPerson=function()  { ... }
AddPerson.prototype.AddRelation=function() { ... }
AddRelation.prototype.AddChild=function() { ... }

Dit werkt blijkbaar wel, je geeft immers aan dat het bij addRelation fout gaat, maar ik zou bij zo'n object model de verschillende objecten toch los defineren al is het om wat extra duidelijkheid, en niet als prototype van elkaar. Volgens mij verwijst "this" zo op deze manier ook altijd naar de PersList, in welke van de functies je het ook gebruikt, omdat je aan het prototypen bent, dan zijn het gewoon functies van het toplevel object.

[edit]

wat doe ik lang over een reply typen :P

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
maar ik zou bij zo'n object model de verschillende objecten toch los defineren al is het om wat extra duidelijkheid, en niet als prototype van elkaar.
Dat is eigenlijk wat ik ook wilde, maar het stukje code met die underscores is het enige wat ik kan gebruiken om een query uit te voeren.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
_Record_begin
    perslist.newPerson('voornaam','achternaam');
    _relation_begin
        var r = new Relation();
        r.met = 'Naam Echtgeno(o)t(e)';
        r.begin = 'Datum begin';
        r.type = 'Type relatie';
        r.AddToParent();
        _child_begin
            var c = new Child('voornaam','achternaam','leeftijd');
            c.AddToParent();
        _child_end
    _relation_end
_recordend

Hoe kan ik het dan het beste oplossen, want dat met de objecten los defineren vind ik wel goed. Het enige waar ik dan tegenaanloop is hoe koppel ik ze dan aan elkaar. :?

Mijn idee stond al een beetje gemeld in het stukje met de underscores...

* Woudloper had gedacht aan een AddtoParent functie, die een array binnen het Person object (in vb. AddPerson method) vult met het nieuwe object
Volgens mij verwijst "this" zo op deze manier ook altijd naar de PersList, in welke van de functies je het ook gebruikt, omdat je aan het prototypen bent, dan zijn het gewoon functies van het toplevel object.
Ja, je hebt helemaal gelijk... Het enige wat dan wordt gedaan is dat het Perslist object wordt gevuld met nog meer properties.

[ Voor 5% gewijzigd door Woudloper op 18-09-2005 23:36 ]


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
Nou,

Ik heb nu wat werkende gekregen en heb het met een soort van addToParent functie gedaan...

zie voor voorbeeld:

http://verwijderddomain.nl/GoT/test.html

mocht er iemand geinteresseerd zijn dan wil ik het wel uitleggen... heb mijn best al gedaan in het documentatie stukje hoop ik :)

[ Voor 15% gewijzigd door Woudloper op 18-09-2005 23:36 ]


  • oh,when?
  • Registratie: April 2000
  • Niet online

oh,when?

...

Op dinsdag 04 december 2001 12:14 schreef rwoudsma het volgende:
mocht er iemand geinteresseerd zijn dan wil ik het wel uitleggen... heb mijn best al gedaan in het documentatie stukje hoop ik :)
bravo, bravo...netjes gedaan. Ook een aanvulling op compatibility table:


• IE 5.5 op WIN2000 werkt goed
• IE 5.0 op MacOS 9 werkt helaas niet

HTH :)

"You're only as good, as what you did last week."


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
bravo, bravo...netjes gedaan. Ook een aanvulling op compatibility table:

• IE 5.5 op WIN2000 werkt goed
• IE 5.0 op MacOS 9 werkt helaas niet
Thanx daarvoor!! (zo wordt het lijstje nog wat uitgebreider... *D

Ben nu nog bezig om de relaties in tabbladen te zetten, maar wellicht heb je het al in een ander topic gezien dat ik er nog niet helemaal uit ben... :( (moet nog ff uitzoeken hoe ik met stylesheets mooie tabs kan maken)

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Topicstarter
bravo, bravo...netjes gedaan. Ook een aanvulling op compatibility table:
Andere nog tests gedaan???? :)
Pagina: 1