Avatar billede r_ibsen Nybegynder
12. marts 2004 - 22:18 Der er 1 kommentar

Kald med argument af konstruktør for superklasse

Hej,

jeg kommer til Javascript fra Java og C++ og har lidt problemer.
Jeg har en klasse Observer som oprettes med en værdi af type Subject som argument:

function Observer(_subject){
  if(!(_subject instanceof Subject)){
    throw new Error("Observer constructor: _subject not of type Subject");
  }
  this.subject = _subject;
  //bla bla bla
}

Samtidig vil jeg gerne nedarve en klasse SlaveSelect fra Observer, hvilket jeg gør ved

function SlaveSelect(_subject){

  //Bummelum, blandt andet:

  this.parentClass = Observer;
  this.parentClass(_subject); //Initier ting i superklasse

  //Bummelum bing bong

}

SlaveSelect.prototype = new Observer;

Men udførelse af den sidste af de ovenstående linier resulterer i at min "Observer constructor: bla bla"-exception kastes, fordi Observer-konstruktøren kaldes uden argument (eller med "" eller hvad ved jeg - i hvert fald ikke med noget af type Subject).
Hvordan opnår jeg fra den nedarvede klasses konstruktør at kunne kalde superklassens konstruktør med et argument uden at få fejl i ovenstående tilfælde? Kan jeg lave en dummy i stil med

dummy = new Subject();
SlaveSelect.prototype = new Observer(dummy);

(det ville være en grim løsning, selvom det virkede).

På forhånd tak.
Avatar billede r_ibsen Nybegynder
12. marts 2004 - 22:25 #1
Hmmm, det ser ud til at virke, men man får jo kvalme af at se på det. Kan det ikke laves pænere / mere elegant?
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