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 :

classe et methode


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut classe et methode
    //creation de la classe
    function Table(idContainer) {
    (.............)
    }
    //premiere méthode
    Table.prototype.evenement = function () {
    (.......)
    this.trier();
    }
    //deuxieme méthode
    Table.prototype.trier = function () {
    (..............)
    }

    En fait dans une méthode, je souhaite appele une autre méthode mais j'ai l'erreur "trier is not definied"

    Quelle est l'erreur car je ne comprend pas ?

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    bonjour,

    essaye cette syntaxe :
    Code javascript : 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
     
    var Table =  function (idContainer) 
    {
     
    }
     
    //premiere méthode
    Table.prototype =
    {
     evenement : function ()
     {
      alert("evenement");
      this.trier();
     }
     ,
     trier : function ()
     {
       alert("trier");
     }
    }
     
    var t = new Table("");
    t.evenement();

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    J'ai essayé mais j'ai le meme message !
    en fait apparemment c'est le "this" qui ne pointe plus comme il faut

    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
      Event.observe(thead,"click",this.evenement); 
    }
     
    //premiere méthode
    Table.prototype =
    {
     evenement : function ()
     {
     
      this.trier();
     }
     ,
     trier : function ()
     {
       alert("trier");
     }
    }
     
    var t = new Table("");
    t.evenement();
    avez vous une idée

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 143
    Points
    11 143
    Par défaut
    c'est quoi Event.observe ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par Auteur
    c'est quoi Event.observe ?
    C'est l"equivalent de mais avec PROTOTYPE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    thead.attachEvent("onclick",this.evenementTrie);

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    tu dois pas faire comme ca...
    Comme tu fais, en effet le this change et devient l'objet au quel tu t'abonne à l'evenement...

    Fait plutot comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var Table = new Table();
    Event.observe(..., function() { Table.evenement(); });

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par FremyCompany
    tu dois pas faire comme ca...
    Comme tu fais, en effet le this change et devient l'objet au quel tu t'abonne à l'evenement...

    Fait plutot comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var Table = new Table();
    Event.observe(..., function() { Table.evenement(); });
    Bonjour,
    je ne comprend cette syntaxe, la variable crée Table ne correspond pas a une instance de l'objet Table ? car si c'est le cas, cele ne convient pas car je souhaite que les evenement declaré soit utilisé par tous les objets Table.

    J'aurai aimé definir tous les événemenst de l'objet dans sa methode de construction

  8. #8
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Bon, je recommence alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Création de l'objet 't'
    var t = new Table("");
     
    /** Plus loin, ou avant **/
    // Dans ta fonction, this est égal à 't'
    function ...
    {
       // ...
       var This = this;
       Event.observe(thead,"click",function() { This.evenement(); }); 
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par FremyCompany
    Bon, je recommence alors

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // Création de l'objet 't'
    var t = new Table("");
     
    /** Plus loin, ou avant **/
    // Dans ta fonction, this est égal à 't'
    function ...
    {
       // ...
       var This = this;
       Event.observe(thead,"click",function() { This.evenement(); }); 
    }
    il va fallu que je fasse :
    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
     
    // Création de l'objet 't'
    var t = new Table("");
     
    /** Plus loin, ou avant **/
    // Dans ta fonction, this est égal à 't'
    function ...
    {
       // ...
       var This = this;
       Event.observe(thead,"click",function(event { This.evenement(event); }); 
    }
     
    function evenement(event) {
                    elementCliquer = Event.element(event);
    		var noCol = elementCliquer.getAttribute("colonne");
    		//on appelle la méthode de trie
    		this.tableTrie(noCol);
    }
    mais pourquoi le code suivant ne fonctionne pas ? :
    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
     
    // Création de l'objet 't'
    var t = new Table("");
     
    /** Plus loin, ou avant **/
    // Dans ta fonction, this est égal à 't'
    function ...
    {
       // ...
       var This = this;
       Event.observe(thead,"click",This.evenement); 
    }
     
    function evenement(event) {
                    elementCliquer = Event.element(event);
    		var noCol = elementCliquer.getAttribute("colonne");
    		//on appelle la méthode de trie
    		this.tableTrie(noCol);
    }
     
    En tout cas, merci beaucoup pour votre aide

  10. #10
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    En javascript, comme dans aucun autre langage, une fonction n'est pas attachée à son objet de départ.

    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
    var comparator1 = new Object();
    var comparator2 = new Object();
     
    comparator1.value = false;
    comparator1.compare=function(object) {
      return (object==this.value);
    }
     
    comparator2.value = true;
    comparator1.compare=function(object) {
      return (object==this.value);
    }
     
    comparator1.compare(false) // true
    comparator2.compare(false) // false
    comparator2.compare=compartor1.compare;
    comparator2.compare(false) // false
    /* Le "this" n'a pas changé avec la méthode */
    En réalité, le compilateur JScript fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comparator2.compare.apply(/* this */ comparator2, /* arguments */ [false])
    mais rien ne t'empecherait de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comparator1.compare.apply(compartor2, [false]) // false

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    encore merci pour ton aide. J'ai laissé un autre message
    http://www.developpez.net/forums/sho...d.php?t=339340

    Comme tu as l'aire de super bien toucher dans ce domainen peut etre aurai tu une reponse pour moi, car je suis toujours bloqué sur ce point

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

Discussions similaires

  1. Classes Anonymes, Method-Local inner Classes.
    Par jhaythem dans le forum Langage
    Réponses: 9
    Dernier message: 08/08/2007, 16h44
  2. Classes et methodes, problème de référence
    Par Blue112 dans le forum Flash
    Réponses: 2
    Dernier message: 04/03/2007, 18h25
  3. Classe interne, methode static et ajout de boutons
    Par comme de bien entendu dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 09/03/2006, 14h13
  4. [Singleton] difference singleton classe avec methodes statiques
    Par matN59 dans le forum Design Patterns
    Réponses: 6
    Dernier message: 15/01/2006, 11h04

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