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 :

[POO] Question objet un peu compliquée (je pense)


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut [POO] Question objet un peu compliquée (je pense)
    Bonjour à tous,

    voilà, je suis tombé aujourd'hui sur une page très intéressante, qui explique comment "simuler" plusieurs aspect de la programmation OO en javascript avec des "closures":
    http://www.litotes.demon.co.uk/js_in...tic.html#mProt

    Par exemple, il est très facile de créer des variables statiques. Voici un exemple, j'imagine que pas mal de monde doit connaître:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var test = (function(){
        var mavariable = 0; //statique
     
        function constructeur(){
            //constructeur
            this.txt = "youpi";
        }
     
        constructeur.prototype.youpi = function(){
            alert(this.txt);
        }
     
        return constructeur;
    })();
    C'est vraiment une bonne chose d'avoir une structure de classe cohérente à mon avis. Mais cette façon de faire me pose un problème sur un programme que je fais en ce moment. Comme j'utilise des events, j'ai souvent besoin de pouvoir faire référence à l'objet dans lequel je suis autrement que par "this". Habituellement, pas de problème, il est très facile de déclarer une variable "globale" attachée à une instance. Mais en faisant comme ci-dessus je ne trouve aucun moyen de faire.
    Pour m'expliquer un peu mieux, j'aimerais pouvoir créer une variable "self" (par ex.) utilisable dans mon objet même dans des contextes où "this" ne fait plus référence à mon objet lui-même...

    Si vous avez une idée, je suis preneur. J'espère que ce n'est pas trop mal expliqué.

    Merci d'avance,

    Smaon

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Comme j'utilise des events, j'ai souvent besoin de pouvoir faire référence à l'objet dans lequel je suis autrement que par "this".
    Pourquoi donc ?
    Et je ne vois pas d'incompatibilité avec la methode invoquée ...
    aurais tu un exemple de code ?
    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
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    Salut ,

    Tu dis :
    j'ai souvent besoin de pouvoir faire référence à l'objet dans lequel je suis autrement que par "this".
    pourquoi passer par une autre méthode que celle la plus approprié selon moi

    le mot clef this, te permet justement a l'interieur de ton objet d'accèder a toute les variables / méthode de ton objet , pourquoi veux tu utiliser un autre pointeur que celui ci ?

    un pti bout de code serait le bienvenue

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut
    Salut,

    parfois "this" n'est simplement pas utilisable, en particulier quand une méthode est appelée par un callback. Par exemple si vous appelez une méthode avec setTimeout. Autre exemple, si vous utilisez un itérateur. Par exemple, avec jQuery, j'utilise $.each qui est très pratique, mais qui définit son propre this.

    Allez, un petit 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
     
    function Test(){
        var self;   
        this.say = function(){
            //ici this fait reference a l'instance de l'objet Test
            self = this;
     
            var arr = new Array("blah", "blih");
            $.each(arr, function(){
                //ici, this fait référence à un élément de l'array arr
                //par contre, self fait tjrs référence à Test
            });
        }
    }
    Voilà, j'espère que ça éclaire un peu mon propos. Si c'est le cas, faut relire le premier message

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Par défaut
    Bon, j'ai laissé tomber cette approche, très intéressante théoriquement mais pas vraiment utilisable dans mon cas. En plus c'est apparemment beaucoup plus gourmand en ressources...

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    je veux juste ajouter une petite chose suite a cette phrase qui m'a fait tilterr :

    Par exemple si vous appelez une méthode avec setTimeout
    Si on reste dans le cadre d'un objet bien entendu,

    this reste accèssible , il faut utiliser un nouveau pointeur en passage de paramètre et non pas passer l'objet lui même a la fonction du timeout

    voila ça ne fais pas avancer le schmiliblick

Discussions similaires

  1. Réponses: 7
    Dernier message: 25/02/2007, 04h26
  2. [SQL - ORACLE] Requete un peu compliquée (pour moi)
    Par Worldofdada dans le forum Langage SQL
    Réponses: 15
    Dernier message: 03/11/2005, 08h25
  3. [POO] Modèle objet: this inutilisable dans certains cas?
    Par vlord dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 13/08/2005, 10h41
  4. Réponses: 3
    Dernier message: 19/05/2005, 10h46
  5. Cherche un objet un peu comme une TStringList
    Par Desraux dans le forum Langage
    Réponses: 6
    Dernier message: 27/07/2004, 14h04

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