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] Objet par valeur


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut [POO] Objet par valeur
    Bonjour,

    Est-il possible de passer un objet par valeur et non par référence ?

    En effet, je suis dans une boucle qui me crée un objet.
    Je passe cet objet à une fonction appelé via le onclick d'un href - le problème est que une fois ma boucle terminée, quelque soit le lien cliqué, c'est toujours le dernier element qui m'est retourné.

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

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

    précise l'id de l'objet en question et transmets cet id à ta fonction. Fais quelque chose dans ce goût là (attention l'id doit être unique):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (i=0; i<n ; i++)
    {
       objet = new Object();
       objet.id = "id"+i;
       fonction (objet.id);
    }

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2002
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bonjour,

    Merci pour ta réponse, mais je ne comprend pas trop ton exemple. En effet, il me semble que si je fais ce que tu me dis je perds toute référence à mon objet et ne peux plus accéder à ses autres propriétés puisque je lui passe uniquement l'id en paramètre... non ?

    Voici ce qu'il me faudrait :
    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 maFonction (objet){
       alert(objet.id + '  ' + objet.nom);
    }
     
    MonObjet = function(pID, pNom){
       this.id = pId;
       this.nom = pNom
    }
     
    for (i=0; i<n ; i++)
    {
       objet =  new MonObjet("id"+i, "nom"+i);
       document.getElementById('mon_div'+ i).innerHTML = "<a href='#' onClick='maFonction (objet)';>lien " + i + "</a>";
    }
    Mais malheureusement dès lors que je clique sur un lien c'est toujours le dernier objet créé qui m'est retourné.

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 649
    Points : 11 138
    Points
    11 138
    Par défaut
    utilise un tableau pour sauvegarder les différents objets créés :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript">
    <!--
    var tabObjets = new Array();
     
    function maFonction (obj){
       alert(obj.id + '  ' + obj.nom);
       return true;
    }
     
    MonObjet = function(pId, pNom){
       this.id = pId;
       this.nom = pNom;
    }
     
    function creationObjets()
    {
     var objDiv;
     var i=0, n=10;
     
     for (i=0; i<n ; i++)
     {
       tabObjets[i] =  new MonObjet("id"+i, "nom"+i);
     
       objDiv = document.createElement("div");
       objDiv.id = "mon_div"+i;
     
       document.body.appendChild(objDiv);
       document.getElementById(objDiv.id).innerHTML = "<a href='#' onclick='maFonction(tabObjets["+i+"])';>lien " + i + "</a>";
     }
    }
    //-->
    </script>
     
    </head>
     
    <body onload="creationObjets()">
     
     
    </body>
     
    </html>

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

Discussions similaires

  1. Passage d'objet par valeur
    Par roro06 dans le forum C#
    Réponses: 9
    Dernier message: 14/01/2011, 17h22
  2. Passer un objet par valeur et non référence
    Par Pynouz dans le forum C#
    Réponses: 2
    Dernier message: 14/01/2011, 09h42
  3. Passage d'objet par valeur
    Par Ghurdyl dans le forum C++/CLI
    Réponses: 4
    Dernier message: 15/07/2009, 17h08
  4. Envoyer des objets par valeur
    Par Promeneur dans le forum Windows Communication Foundation
    Réponses: 7
    Dernier message: 28/03/2008, 17h45
  5. Copier un objet par valeur ?
    Par Totanne dans le forum VB.NET
    Réponses: 4
    Dernier message: 25/03/2008, 14h22

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