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 :

Modification dynalique de variable dans une "classe"me variable classe


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut Modification dynalique de variable dans une "classe"me variable classe
    Bonjour,

    Je définis ma classe ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function Ma_Classe() {
     
        this.var;
     
        [...]
    Puis dans une méthode j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    this.check = function(ph) {
        ma_fonction({
            ...
        }, function(response) {
            this.var = response.status;
        }
        });
    }
    Mais this.var n'est pas mis à jour à la sortie de ma fonction...

  2. #2
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Bonjour,
    Il y a une accolade fermante en trop dans le code, non ?
    Une solution sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var ob_=this;
    ma_fonction({
            ...
        }, function(response) {
            ob_.var = response.status;
        });
    A noter qu'écrire juste this.var; n'a pas d'utilité, cela ne crée pas la propriété.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Ca fait le même chose si j'initialise this.var à 0 par exemple.

    Et si dans la fonction anonyme (ligne 4.5.6) j'appelle une autre méthode délcaré dans le fichier, il me dit qu'il ne trouve pas cette méthode.

  4. #4
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Oui, mais je n'ai pas dit qu'initialiser la variable réglait le problème.

    il me dit qu'il ne trouve pas cette méthode.
    Avec la solution que j'ai proposée ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Je n'ais pas trop compris ta solution...
    Tu initialises la variable ob_ avec this ?

  6. #6
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Oui, 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
    function ma_fonction(ob_,fc_) {
    	fc_({status:"test"});
    }
    function Ma_Classe() {
    	this.check = function(ph) {
    		var ob_=this;
    		ma_fonction({},
    			function(response) {
    				ob_.var = response.status;
    			});
    	}
    }
    var ob_=new Ma_Classe();
    ob_.check();
    alert(ob_.var); //test
    Autrement, pour exécuter une fonction avec dedans this qui vaut un objet en particulier, vous pouvez regarder du côté de call et apply.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    D'accord, merci.
    Et si à l'intérieure de ma classe j'ai une autre méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    this.afficher = function(msg) {
            console.log(msg);
    }
     
    this.check = function(ph) {
        ma_fonction({
            ...
        }, function(response) {
            this.afficher(response.msg);
        });
    }
    }
    ?

  8. #8
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Pareil :
    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
    function ma_fonction(ob_,fc_) {
    	fc_({msg:"test"});
    }
    function Ma_Classe() {
    	this.afficher = function(msg) {
    		console.log(msg);
    	};
    	this.check = function(ph) {
    		var ob_=this;
    		ma_fonction({},
    			function(response) {
    				ob_.afficher(response.msg);
    			});
    	};
    }
    var ob_=new Ma_Classe();
    ob_.check();
    Ou avec call :
    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
    function ma_fonction(ob_,fc_,ob_2) {
    	fc_.call(ob_2,{msg:"test"});
    }
    function Ma_Classe() {
    	this.afficher = function(msg) {
    		console.log(msg);
    	};
    	this.check = function(ph) {
    		ma_fonction({},
    			function(response) {
    				this.afficher(response.msg);
    			},this);
    	};
    }
    var ob_=new Ma_Classe();
    ob_.check();

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Mais je ne comprends pas à quoi sert cette fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function ma_fonction(ob_,fc_) {
    	fc_({msg:"test"});
    }

  10. #10
    Membre éclairé
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    335
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Janvier 2017
    Messages : 335
    Points : 715
    Points
    715
    Par défaut
    Ce n'est qu'un exemple.
    Dans le code initial, vous appelez une fonction avec deux paramètres, un objet et une fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ma_fonction({
            ...
        }, function(response) {
            this.var = response.status;
        });
    J'ai juste ajouté un exemple de ce que pourrait être "ma_fonction".
    Dans cet exemple, j'exécute simplement la fonction passée en paramètre.
    Quand je fais fc_({msg:"test"});, j'exécute la fonction function(response) {ob_.afficher(response.msg);}.

    Maintenant, vous pouvez reprendre votre fonction "ma_fonction" telle que vous l'aviez initialement prévue et essayer d'intégrer l'une des solutions proposées à votre script.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    Points : 33
    Points
    33
    Par défaut
    Ok, c'est bon j'ai compris
    Merci pour ton aide

Discussions similaires

  1. Réponses: 8
    Dernier message: 16/01/2017, 15h20
  2. [phpMyAdmin] Passer le nom d'une table en variable dans une requête avec phpMyAdmin
    Par EnRadeSurEclipse dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 29/09/2014, 11h49
  3. Réponses: 4
    Dernier message: 21/01/2013, 17h51
  4. Réponses: 6
    Dernier message: 10/01/2013, 11h07
  5. Appeler une série de variable dans une boucle for
    Par jujuf1 dans le forum MATLAB
    Réponses: 2
    Dernier message: 19/02/2008, 16h06

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