IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Accès variable privée depuis fonction callback


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut Accès variable privée depuis fonction callback
    Bonjour à tous,

    surement un problème de visibilité:

    J'ai ma classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function MaClasse() {
        var privateObj = {};
     
        this.getPrivateObj  = function () {
            return privateObj;
        }
     
        var objetTiers = new ObjetTiers();
     
        this.methodePublique = function() {
     
            objetTiers.methode(arg1, function(response, status ) {
                if (status == OK) {
                    alert('OK');
                    privateObj = response.elements[0];
                }
            });
     
        }
     
    }
    Avec une fonction callback donc dans objetTiers.methode()

    je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var maclasse = new MaClasse();
     
    maclasse.methodePublique();
    alert( maClasse.getPrivateObj() );
    Affiche toujours: OK puis null..

    Je pensais que les closures permettaient ce genre de chose ..

    Une idée?

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    c'est pas le coup du that = this ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 13
    Par défaut
    Sorry c'était this.getPrivateObj qui était mal déclarée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    function MaClasse() {
     
        var privateObj = {};
        this.getPrivateObj = privateObj;
     
        var objetTiers = new ObjetTiers();
     
        this.methodePublique = function() {
     
            objetTiers.methode(arg1, function(response, status ) {
                if (status == OK) {
                    alert('OK');
                    privateObj = response.elements[0];
                }
            });
     
        }
     
    }
    Sinon le that = this est à utiliser dans le cas où l'on veut accéder à des membres publics de la classe depuis la fonction anonyme, les membres privés eux sont visibles (closure). On utilise alors that.getPrivateObj et non pas this.getPrivateObj.

    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    function MaClasse() {
        that = this;
     
        var privateObj;
     
        this.publicObj = {};
     
        var objetTiers = new ObjetTiers();
     
        this.methodePublique = function() {
     
            objetTiers.methode(arg1, function(response, status ) {
                if (status == OK) {
     
                    that.publicObj = response.elements[0];
                    privateObj = response.elements[0];
     
                }
            });
     
        }
     
    }
    Merci pour ta réponse qui m'a toutefois bien aidé!

    J'attends qd même qu'un Javascript Ninja vienne confirmer tout ça pour modifier le statut du sujet..

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 207
    Par défaut
    Bonjour, pourquoi pas une petite lecture de
    Programmation orientée objet avec le langage JavaScript , accès direct au mot clé this

Discussions similaires

  1. [Objet] Accès à propriété privée depuis méthode statique
    Par Invité dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 20/09/2011, 13h39
  2. Astuce pour accès aux variables globales depuis une fonction
    Par manur0 dans le forum Général Python
    Réponses: 0
    Dernier message: 03/09/2009, 14h30
  3. Utilisation d'une même variable dans différents fonctions de Callback
    Par houjuventini dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 16/11/2007, 08h58
  4. Accès à une variable privée
    Par jobe dans le forum C++
    Réponses: 2
    Dernier message: 10/11/2007, 20h46
  5. [POO] Problème d'accès à une variable privée
    Par Nadd dans le forum Langage
    Réponses: 8
    Dernier message: 17/09/2006, 21h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo