2010-08-23 8 views
1

Cela semble être un problème simple, mais cela ne fonctionne pas.Classe JavaScript - difficulté à accéder à la variable publique dans la méthode privée

Dans l'exemple ci-dessous, unselect est appelé mais la variable publique 'this.backSelected' n'est pas définie. Si je déplace le code de la méthode unselect directement dans la méthode public off cela fonctionne.

Comment vérifier une variable publique dans une méthode privée? Je ne comprends pas pourquoi cela ne marche pas.

Merci.

function MyClass() 
{ 
    // public vars 
    this.isActive = false; 
    this.backSelected = false; 

    // public methods 
    this.on = function() { 
     this.isActive = true; 
     this.backSelected = true; 
     // set back button on image 
    } 

    this.off = function() { 
     this.isActive = false; 
     unselect(); 
    } 

    // private methods 
    function unselect() { 
     if(this.backSelected) { 
      // set back button off image 
     } 
    }; 


} 

var obj = new MyClass(); obj.on(); obj.off();

Répondre

5

Vous n'appelez pas unselect en contexte, donc this ne veut pas dire ce que vous pensez que cela signifie.

unselect.apply(this); 
+0

Pensez que c'est parfait. Voir la section «Privilégié» pour référence: http://www.crockford.com/javascript/private.html – Gary

+0

Merci! Jamais vu la méthode d'application avant. @Gary - merci pour le lien, bonne lecture. –

Questions connexes