Avatar billede Slettet bruger
18. september 2006 - 17:10 Der er 11 kommentarer og
1 løsning

Dynamisk oprettelse af klasseinstans

Hej eksperter!

Hvordan opretter jeg dynamisk en klasseinstans?
var this["instans"]:Klasse = new Klasse  virker ikke.
Avatar billede mat Nybegynder
18. september 2006 - 17:58 #1
Hvorfor vil du gøre sådan?

var instans:Klasse = new Klasse();

Bør da være fint?

mvh mat
Avatar billede Slettet bruger
18. september 2006 - 18:20 #2
Hvorfor?
Lad mig give et eksempel...

var listeOverTing:Array = {"Bold", "Batteri", "Bord"};
for (var i:Number=0; i<listeOverTing.length; i++) {
    var this["tingNummer"+i]:Ting = new Ting();
}
Avatar billede Slettet bruger
18. september 2006 - 18:21 #3
sorry, det f*ckede jeg helt op.
Prøver igen
Avatar billede Slettet bruger
18. september 2006 - 18:22 #4
var listeOverTing:Array = {"Bold", "Batteri", "Bord"};
for (var i:Number=0; i<listeOverTing.length; i++) {
    var this["tingNummer"+i]:Ting = new Ting(listeOverTing[i]);
}

SÅDAN!
Avatar billede Slettet bruger
18. september 2006 - 19:14 #5
Forstår du nu, hvad jeg vil?
Avatar billede mat Nybegynder
18. september 2006 - 19:19 #6
Du kan gøre det uden at typedeklarere objektet, dvs;

var listeOverTing:Array = ["Bold", "Batteri", "Bord"];
for (var i:Number=0; i<listeOverTing.length; i++) {
    this["tingNummer"+i] = new Ting(listeOverTing[i]);
}

Og hvis det er af betydning for dig at objektet nu også bliver betragtet som typen "Ting" (for f.eks at få fejlmeddelelser på metodekald) kan du caste det, med;

Ting(this["tingNummer"+i]).someMethod();

Er det noget i den dur du mangler?

mvh mat
Avatar billede Slettet bruger
18. september 2006 - 20:33 #7
A-ha. Så jeg skal bare lade være med at fast-type det?
Og det andet eksempel er, når jeg dynamisk skal kalde en metode for instansen?
Bare smid et svar.
Avatar billede Slettet bruger
18. september 2006 - 20:34 #8
(Og så kan man vel også sige
Ting(this["tingNummer"+i]).someVar;
?
Avatar billede mat Nybegynder
18. september 2006 - 20:51 #9
yups :)
Avatar billede Slettet bruger
18. september 2006 - 21:00 #10
Taks! ;)
Avatar billede barklund Nybegynder
19. september 2006 - 09:31 #11
Det er godt nok ikke så pænt bygget bygget op. Hvorfor bruger du ikke et rigtigt array istedet for det andet? Altså:

private var ting:Array;
...
var listeOverTing:Array = ["Bold", "Batteri", "Bord"];
for (var i:Number=0; i<listeOverTing.length; i++) {
    ting.push(new Ting(listeOverTing[i]));
}
...

Det vil straks være pænere :)

--
Morten Barklund
Avatar billede Slettet bruger
02. oktober 2006 - 09:30 #12
Altså bare placere instancerne i arrayet?
Det var jo et eksempel ;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester