Gå til innhold

Vanskelig(?) spørsmål om tilgang utenfor funksjone


Anbefalte innlegg

Skrevet (endret)

Sliter litt med noe som minner litt om private klasser i java. Det er ikke så lett å forklare så jeg har laget en liten kodesnutt for å vise hva jeg mener.

 

function Panel() {

 this.tittel = "Innstillinger";

 var knapp = document.createElement("input");
 knapp.setAttribute("type", "button");
 
 knapp.onclick = function(hendelse) {

   // Her vil jeg gjerne ha tilgang til tittel.
   // this referer her til knapp og ikke til Panel som jeg har litt lyst til at den skal gjøre :)

 }
}

 

Er det noen enkel å grei måte å få tilgang til tittel fra onclick funksjonen eller er det ikke mulig? Hittil har jeg jukset det til, men etterhvert som koden min vokser begynner juksingen å utgjøre et unødvendig mange funksjonskall.

Endret av astrox
Videoannonse
Annonse
Skrevet

Du har prøvd å bruke bare "tittel" i den innerste funksjonsdeklarasjonen?

 

Du kunne ikke legge ved et levende eksempel - jeg har litt problemer med å få dette til å gjøre noe som helst.

Skrevet

Scriptet mitt begynner å bli ganske komplekst så jeg skrev en liten kodesnutt for å illustrere hva jeg mener. Det er ikke meningen at eksemplet skal virke :)

 

Ah.. fant faktisk ut av det nå. Sånn som det står nå er ikke tittel definert i den inneste funksjonen, men dersom jeg deklarer var tittel istedenfor this.tittel i den ytterste funksjonen ble det mulig å få tak i den.

 

Jeg trodde ikke den innerste funksjonen var med i det scopet var tittel ble definert for.

 

Takk for hintet :)

Skrevet (endret)
To keep JavaScript from mixing up same-name variables, put var in front of your variables as you declare them. A variable inside a function that's declared with var is called a local variable, and it only exists inside that function. In general, you want your variables to be local whenever possible.

 

Det blir vel det samme som

private * tittel

i java, men jeg tror dette stemmer:

 

Hvis du bruker       > Er den tilgjenelig for
this.tittel ="Title" > BARE for fuksjonen som referes til i this
var tittel ="Title"  > Bare for den inneholdene funksjonen og funksjoner inne denne.
tittel ="Title"      > ALT (globalt i dokumentet)

Skal sette opp et prøveark for å sjekke dette så snart jeg får tid.

Endret av Kagee
Skrevet

Så kommer det store spørsmålet - gjør de tre store nettleserne dette likt? Forhåpentligvis er det et krav fra js/emca-spesifikasjonen hvordan dette skal behandles.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...