Avatar billede kla Nybegynder
02. oktober 2002 - 13:36 Der er 2 kommentarer og
1 løsning

Objekter i JavaScript

Hej
Mit spørgsmål er ganske simplet, hvordan/kan man lave sine egne objekter i JS ?

Jeg vil gerne som i Java kunne lave en instans af et obj. som jeg derefter kan arbejde på via nogle metoder ! Hvis noget er istand til at fortælle mig hvordan man i givet fald kan gøre dette ville det være en stor hjælp !

/Kenneth
Avatar billede jakoba Nybegynder
02. oktober 2002 - 14:01 #1
du skal ligesom tænke forskelligt når du tænker på objekter i Javascript.

i Java starter du med at lave en struktur til dit objekt (din class definition) og den struktur kan du så derefter lave indstanser af.

i Javascript er det instanserne der er hovedsagen. Du kan fx bygge dig et objekt med:

var olsen = new Object();  // standard basis-objekt med ingenting i
olsen.fornavn = 'jørgen';
olsen.efternavn = 'olsen';  // fyld indhold i objektet efterhånden som du har lyst
olsen.helenavnet = new Function( "return this.fornavn +" " +this.efternavn;" );
// og du kan teste henadvejen
alert( olsen.fornavn );
alert( olsen.helenavnet() );

// du kan sågar fjerne indhold fra dine objekter
delete( olsen.fornavn );  // nu vil  funktionen olsen.helenavnet() give fejl.
olsen.fornavn = "123456789";  // så vi laver et 'fornavn' igen :-)

Og det er hovedreglen i javascript. du kan modelere og massere et objekt ganske som du har lyst til. men husk at det er en instans af objektet du masserer. det er ikke en Java klasse

nogen gange ønsker man mange objekter med samme struktur. så simulerer man Javas klasse definition ved at lave en funktion til at oprette den slags objekter:

function Navn( forn, efter ) {  // en 'klassedefinition'
    this.fornavn = forn;
    this.efternavn = efter;
    this.toString = new Function( "return this.fornavn +" " +this.efternavn;" );
    return this;
}

var olsen = new Navn( "Jørgen", "Olsen" );
var allende = new Navn( "Isabella", "Allende" );  // osv

eller måske snavere:
var olsen = new Object();
olsen.nvn = new Navn( "Jørgen", "Olsen" );
olsen.sttribut_olsen_har_men_mange_andre_navngivne_ting_ikke_har = "42";

Jeg håber det er nok til at komme ignag. ellers spørg videre.

ps: prøv med:
    alert ( olsen.nvn );  // sådan en toString metode kan være nyttig :-)

mvh JakobA
Avatar billede jakoba Nybegynder
02. oktober 2002 - 14:12 #2
Gaah. den funktion jeg skriver 2 gange duer ikke. det skal være:

    this.toString = new Function( "return this.fornavn +' ' +this.efternavn;" );

så der ikke er samme slags anførselstegn indni strengen som der bruges til at omkranse den.
Avatar billede kla Nybegynder
08. oktober 2002 - 07:55 #3
Takker, det var hva' jeg søgte, man kan ikke altid bruge sin Java baggrund og regne med at JS kan bruges på samme måde *grin*
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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