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 :

setInterval et objet


Sujet :

JavaScript

  1. #1
    Invité
    Invité(e)
    Par défaut setInterval et objet
    Bonjour,

    j'ai par exemple ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var MonObjet = function(options){
        this.myprop = options.prop;
    }
    MonObjet.prototype = {
        maFonction:function(){
            console.debug(this.myprop);
        },
        maFonction2:function(){
            window.setInterval('this.maFonction()',5000);
        }
    }
    si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var test = new MonObjet({prop:'test'});
    test.maFonction2();
    J'ai une erreur comme quoi this.maFonction() n'est pas une fonction.
    Ce qui est finalement normal, this ne pointant plus sur un objet MonObjet.
    Y as t'il un moyen de "binder" le this sur l'objet ?
    Dernière modification par Invité ; 24/06/2010 à 18h00.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Bonjour,

    "this" ne doit pas correspondre à ce que tu t'attends à avoir
    C'est probablement l'objet "window" et pas ton objet "test"

    devyan

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci pour t'as réponse devyan .

    Ce qui est finalement normal, this ne pointant plus sur un objet MonObjet.
    J'avais bien compris que le problème était de modifier le scope de la fonction setInterval et c'est part ailleurs ma question en fait.

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Sujet maintes fois traité
    Référence this dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var MonObjet = function(options){
        this.myprop = options.prop;
        var that = this;
    }
     
    MonObjet.prototype = {
        maFonction:function(){
            console.debug(this.myprop);
        },
        maFonction2:function(){
            window.setInterval('that.maFonction()',5000);
        }
    }

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 132
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 132
    Points : 1 418
    Points
    1 418
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Sujet maintes fois traité
    Comme bien souvent ...

    Alors j'ai vérifié ...

    Mais non, la fonction Recherche fonctionne toujours correctement

  6. #6
    Invité
    Invité(e)
    Par défaut
    Désolé pour le manque de recherche.
    Super .... mais chez moi ca ne marche pas ?!
    that is not defined
    peut etre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var that;
    var MonObjet = function(options){
        this.myprop = options.prop;
        that = this;
        this.maFonction = function(){
            console.debug(this.myprop);
        },
        this.start = function(){
            window.setInterval('that.maFonction()',5000);
        }
    }
    mais ce serez idiot. Il doit me manquer une information.

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var MonObjet = function(options){
        this.myprop = options.prop;
        var that = this;
        this.maFonction = function(){
            console.debug(this.myprop);
        },
        this.start = function(){
            window.setInterval(function(){that.maFonction()},5000);
        }
    }

  8. #8
    Invité
    Invité(e)
    Par défaut
    Oki, un grand merci à toi, et encore désolé pour l'abus.
    je clos.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. codage objet
    Par charly dans le forum Algorithmes et structures de données
    Réponses: 18
    Dernier message: 22/08/2002, 16h49
  2. algo : rotation d'objet 3d
    Par numeror dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 19/08/2002, 22h58
  3. Importer des objets de 3dsMax
    Par Anonymous dans le forum OpenGL
    Réponses: 3
    Dernier message: 06/05/2002, 13h53
  4. Peux t'on créer une copie locale de l'objet partagé?
    Par Anonymous dans le forum CORBA
    Réponses: 8
    Dernier message: 16/04/2002, 16h20
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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