Toon posts:

[JS] globale variabelen 'minder scope' geven

Pagina: 1
Acties:

Verwijderd

Topicstarter
Excusez voor de wat onduidelijke titel (en bericht). Ik heb een DHTML interface component gemaakt. Probleem is dat er meerdere globale variabelen zijn die moeten worden gedeeld door functies. Zo is er bijvoorbeeld een globale array variabele waar de gegevens inzitten etc. Nou zou ik graag meerdere van deze controls op een pagina willen plaatsen; in een taal als .NET zou ik dan de interface componenten in user controls zetten, zodat ze hun eigen variabelen beheren. Hoe pak je zoiets in javascript aan?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:00

crisp

Devver

Pixelated

Door dat soort variabelen properties te maken van een object waar je dan meerdere instanties van aanmaakt:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function myDHTMLComponent()
{
  this.var1 = 'foo';
  this.car2 = 'bar';
}
//-- methods aanmaken
myDHTMLComponent.prototype =
{
  method1: function()
  {
    // iets
  },
  method2: function()
  {
    // iets
  }
}

var component1 = new myDHTMLComponent();
var component2 = new myDHTMLComponent();

Intentionally left blank


Verwijderd

Topicstarter
Okee, die richting zat ik hier ondertussen ook al op te denken. Rest de vraag, hoe kan ik het beste die "myDHTMLComponent" objecten bewaren? Bijvoorbeeld in een associatief Object o.i.d?


JavaScript:
1
2
var myComponentRepository = new Object();
myComponentRepository[myComponentId] = new MyComponent(myComponentId);


En dan elke keer als er een event is op zo'n custom component de componentClientId meegeven om de variabelen voor die component te resolven. Is dat praktisch? Of iets als:

JavaScript:
1
myComponentRepository.UpdateAll(e);

[ Voor 35% gewijzigd door Verwijderd op 28-08-2006 23:14 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 01:00

crisp

Devver

Pixelated

Ja, dan zou je dat inderdaad in een soort 'super'-object moeten stoppen

Intentionally left blank


Verwijderd

crisp schreef op dinsdag 29 augustus 2006 @ 00:24:
Ja, dan zou je dat inderdaad in een soort 'super'-object moeten stoppen
Al is 'super' misschien een beetje verwarrend in deze context ;)

Mag ik even verwijzen naar Clay's JavaScript Objects tutorial? Dat kan een hoop vragen voorkomen :)