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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    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 émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    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 : 340
    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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    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 émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    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 : 340
    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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

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

  6. #6
    Membre émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    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 : 340
    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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    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 émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    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 : 340
    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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    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 émérite
    Femme Profil pro
    Autre
    Inscrit en
    Janvier 2017
    Messages
    340
    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 : 340
    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
    Membre confirmé
    Homme Profil pro
    Etudiant
    Inscrit en
    Juin 2014
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Juin 2014
    Messages : 63
    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