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] Dupliquer un objet


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut [POO] Dupliquer un objet
    Existe-t-il une méthode simple pour dupliquer un objet, sans en connaître à priori le contenu. /!\ j'ai besoin d'une vrai duplication !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function monObj() {
    this.a = "A";
    this.b = ["x","y","z"];
    }
     
    var m1=new monObj();
    var m2=new monObj();
    m2=m1;
    m2.a="B";
    L'exemple ci-dessus pourrait fonctionner mais la modif sur m2 a également modifié m1; je cherche donc à dupliquer le contenu de m1. /!\ mon objet peut être plus complexe que celui donné en exemple.

    Merci d'avance,

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868

  3. #3
    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
    cloneNode ...
    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 !

  4. #4
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    Merci mais cette méthode je l'ai déjà testé, cela fonctionne bien au premier niveau, or j'ai bien précisé que mon objet pouvait être plus complexe. Avec cette méthode, la duplication ne fonctionne pas sur le tableau inclus dans l'objet !

  5. #5
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    mwé si c est un node, pas pour un objet autre

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    teste le typeof de ton this[i] et fais un appel recursif

  7. #7
    Membre averti
    Inscrit en
    Juillet 2002
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      function dupliqueObj(obj1,obj2)
      {
        var o1=obj1;
        var o2=obj2;
     
        for (i in o1)
        {
          if (typeof(o1[i])=="object")
            dupliqueObj(o1[i],o2[i]);
          else
            o2[i]=o1[i];
        }
      }
    Ca marche !! merci ...

  8. #8
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Citation Envoyé par mch_27
    Merci mais cette méthode je l'ai déjà testé, cela fonctionne bien au premier niveau, or j'ai bien précisé que mon objet pouvait être plus complexe. Avec cette méthode, la duplication ne fonctionne pas sur le tableau inclus dans l'objet !
    Mais si, ça fonctionne très bien, il suffit de mettre le deuxième paramètre de cloneNode à true pour indiquer que tu veux faire un deep copy de ce node...

  9. #9
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    il me semble qu il veut faire une copie d'un objet pas d'un noeud

    du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var machin = function(){
       this.truc = "hello";
       this.sayHello = function(){
            alert(this.truc);
       }
    }
    sinon effectivement cloneNode(true)

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

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  2. Dupliquer un objet
    Par Folken Laëneck dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/08/2005, 09h07
  3. [POO] Désactiver un objet dont le nom est passé en parametre
    Par JavaEli dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/07/2005, 08h47
  4. [POO] fonction toUpperCase : Objet attendu
    Par LineLe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 19/04/2005, 16h51
  5. [POO] Passer un objet HTML en argument.
    Par defacta dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 17/12/2004, 10h44

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