Avatar billede hoppe11 Nybegynder
15. december 2010 - 23:25 Der er 1 kommentar og
1 løsning

tilgå public var i klasse

hey

sidder og prøver på at lave nogle klasser i javascript, men støder så på et lille problem.. hvordan kan jeg tilgå en public var fra en methode i klassen?

class_tst = function() {
    this.pub_var = 15;
   
    method_tst = function() {
        alert(this.pub_var);
    }
}

tst = new(class_tst);

hvordan kan jeg alerte pub_var? her får jeg undefined.. funktionen method_tst må ikke være public.. altså som this.method_tst
Avatar billede intenz Novice
16. december 2010 - 00:46 #1
Noget af det rigtige, men ikke helt. Jeg har skrevet et snippet ud din kode, med kommentarer.

Prøv at se om det hjælper.

<script>
var test = function() { // test er namespace for din 'klasse'

    // alle attributes/methods er private her
    var pub_var = 15;

    // Alle public methods. Sat ind i et object som returneres til dit namespace
    return {
        method_tst: function() {
            alert(pub_var);
        },
        method_tst2: function() {
            return pub_var*2;
        }
    };
}(); // vi kører funktionen med det samme, så test variablen indeholder det object vi returnerer (og ikke private)

test.method_tst();

var tst2 = test.method_tst2();
alert(tst2);

// giver undefined, da pub_var er private
alert(test.pub_var);
</script>
Avatar billede hoppe11 Nybegynder
16. december 2010 - 03:18 #2
kigger lige på det du har lavet.. men har et spørgsmål mere imens :)

vil lave en klasse ENV som i selve klassen skal sætte variablen browser_name, da man ikke skal køre en funktion hver gang man skal bruge variablen.. hvis du forstår hvad jeg mener..

det skal også være sådan at jeg kan bruge variablen til andre metoder i ENV klassen

function ENV() {
    this.browser_name;
    //this.browser_ver = browser_ver;
   
    function setBrowser_name() {
        if(navigator.appName == 'Microsoft Internet Explorer') return 'IE';
        else if(navigator.appName == 'Netscape') return 'FF';
    }
   
    function setBrowser_ver() {
        browser_ver = navigator.appVersion;
    }
}

ENV = new ENV();
alert(ENV.browser_name);
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